Zend Framework 2 - UnitTests

时间:2013-01-10 15:26:51

标签: php unit-testing authentication zend-framework2 zend-test

我想创建一个简单的访问单元测试,如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());
}

1 个答案:

答案 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。它可能是您的用户模型类的模拟或类似的东西。

请注意,我尚未对其进行测试,因此可能无法立即生效。但是,它只是想向你展示方向。