我想创建一个简单的访问单元测试,如in the tutorial所示。
我的项目使用ZFCUser
进行身份验证。
因此,我(显然未经过身份验证的)测试人员得到的HTTP response
为302而不是预期的200。
我能做些什么呢?谢谢!
教程中的代码如下所示:
public function testAddActionCanBeAccessed()
{
$this->routeMatch->setParam('action', 'add');
$result = $this->controller->dispatch($this->request);
$response = $this->controller->getResponse();
$this->assertEquals(200, $response->getStatusCode());
}
答案 0 :(得分:3)
thanks, good idea! is there an easy way to mock the auth? – Ron
我将此作为答案发布,因为将其压缩成评论太多了。是的,有一种简单的方法来模拟AuthenticationService类。首先,查看Stubs / Mocks上的文档。
您需要做的是从Zend \ Authentication \ AuthenticationService创建模拟并将其配置为假装包含标识。
public function testSomethingThatRequiresAuth()
{
$authMock = $this->getMock('Zend\Authentication\AuthenticationService');
$authMock->expects($this->any())
->method('hasIdentity')
->will($this->returnValue(true));
$authMock->expects($this->any())
->method('getIdentity')
->will($this->returnValue($identityMock));
// Assign $authMock to the part where Authentication is required.
}
在此示例中,需要先定义变量$identityMock
。它可能是您的用户模型类的模拟或类似的东西。
请注意,我尚未对其进行测试,因此可能无法立即生效。但是,它只是想向你展示方向。