Jak otestovat třídu závislou na \Nette\Security\User?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- BigCharlie
- Člen | 283
Mám cca takovouto třídu:
class MyClass extends \Nette\Object
{
/** @var \Nette\Security\User */
private $user;
public function __construct(\Nette\Security\User $user)
{
$this->user = $user;
}
public function someMethod()
{
...
$userAllowed = $this->user->isInRole('xx');
...
$data = $this->user->identity->someData;
...
}
}
Otázka zní – jak otestovat v PHPUnit? Snažil jsem se mockovat
\Nette\Security\User, ale asi to není dobrá cesta. Metoda
isInRole
je final, getIdentity
je taky final, navíc
uvedené volání vyhodí při testu FatalErrorException ‚Trying to get
property of non-object‘.
Ptám se tedy zkušenějších – jak tedy správně otestovat?
- Filip Procházka
- Moderator | 4668
Na rovinu, Nette není moc PHPUnit friendly a občas mi z toho slézají vlasy. Tedy lepší než mockovat User, je mít vlastní UserStorage
Identitu si mocknout už zvládneš :)