1

我想创建一个简单的访问单元测试,如教程中所示。

我的项目ZFCUser用于身份验证。

结果,我的(显然未经过身份验证的)测试人员得到HTTP response302 而不是预期的 200。

有什么想法我能做些什么吗?谢谢!

本教程中的代码如下所示:

public function testAddActionCanBeAccessed()
{
    $this->routeMatch->setParam('action', 'add');

    $result   = $this->controller->dispatch($this->request);
    $response = $this->controller->getResponse();

    $this->assertEquals(200, $response->getStatusCode());
}
4

1 回答 1

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在此示例中,需要预先定义一个变量。它可能是您的用户模型类的模拟或类似的东西。

请注意,我尚未对其进行测试,因此它可能无法立即工作。但是,它只是应该向您显示方向。

于 2013-01-11T08:12:34.543 回答