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
+
0
-

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
+
0
-

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š :)