Zend framework2 如何使用ZfcuseIdentity助手在Zend Framework 2和ZfcUser上测试操作
按照这种方式,我正在使用ZfcUser并尝试在控制器中测试一些操作。但是当执行测试时,我会得到一个错误,因为我正在使用Zend framework2 如何使用ZfcuseIdentity助手在Zend Framework 2和ZfcUser上测试操作,zend-framework2,phpunit,zfcuser,bjyauthorize,Zend Framework2,Phpunit,Zfcuser,Bjyauthorize,按照这种方式,我正在使用ZfcUser并尝试在控制器中测试一些操作。但是当执行测试时,我会得到一个错误,因为我正在使用$this->zfcUserIdentity()获取视图中的用户名 我怎样做这个测试?我想模仿这种方法,但我不知道如何做到这一点。您可以看看ZfcUser测试: 基本上,您必须模拟ZfcuseIdentity控制器插件,并告诉控制器插件管理器使用该模拟。我在我的AbstractHttpControllerTestCase中使用了类似的内容: /** * @param array
$this->zfcUserIdentity()
获取视图中的用户名
我怎样做这个测试?我想模仿这种方法,但我不知道如何做到这一点。您可以看看ZfcUser测试:
基本上,您必须模拟ZfcuseIdentity控制器插件,并告诉控制器插件管理器使用该模拟。我在我的
AbstractHttpControllerTestCase中使用了类似的内容:
/**
* @param array $roles e.g. ['admin']
*/
protected function login($roles) {
$userMock = $this->getMock('Application\Entity\User', [], [], '', false);
$userMock->expects($this->any())
->method('getRoles')->will($this->returnValue($roles));
$storageMock = $this->getMock('\Zend\Authentication\Storage\NonPersistent');
$storageMock->expects($this->any())
->method('isEmpty')->will($this->returnValue(false));
$storageMock->expects($this->any())
->method('read')->will($this->returnValue($userMock));
$sm = $this->getApplicationServiceLocator();
$auth = $sm->get('Zend\Authentication\AuthenticationService');
$auth->setStorage($storageMock);
}
然后在我的测试中:
$this->login(['admin']);
$this->dispatch($url);
感谢@Danielss89,我无法完全理解如何模拟ZfcuseIdentity控制器插件,但我查看了代码,使其模拟AuthenticationService,并期望使用getIdentity方法模拟用户实体。工作完美。我正在使用ZfcRbac(权限);如果你不是,你就不需要这个getRoles
,你应该更专注于充实$userMock
。