ZF2测试:无法断言响应代码" 302",实际状态代码为" 500"

时间:2015-09-04 09:41:54

标签: php zend-framework2 phpunit

我正在为AuthenticationController实现PHPUnit测试。当我测试/logout路线时:

public function testLogoutActionCanBeAccessed()
{
    $this->dispatch('/logout');
    $this->assertResponseStatusCode(302);

    $this->assertModuleName('Main');
    $this->assertControllerName('Main\Controller\Authentication');
    $this->assertControllerClass('AuthenticationController');
    $this->assertMatchedRouteName('logout');
}

我收到以下错误消息:

There was 1 failure:

1) MainTest\Controller\AuthenticationControllerTest::testLogoutActionCanBeAccessed
Failed asserting response code "302", actual status code is "500"

注销码如下:

public function logoutAction()
{
    $this->loginLogoutService->logout();

    return $this->redirect()->toRoute('home');
}

public function logout() {
    $this->authservice->getStorage()->forgetMe();
    $this->authservice->clearIdentity();
}

$this->authservice = new AuthenticationService();

当我逐步调试我的应用程序时,$actionResponse状态代码为302,应用程序正常运行。 500是内部服务器错误。我不知道它来自哪里。

任何人都有一些想法?

P.S。

public function setUp()
{

    $this->setApplicationConfig(
        include '/../../../../../config/application.config.php'
    );
    parent::setUp();
}

1 个答案:

答案 0 :(得分:1)

我也有同样的问题。在我之前的一个测试中,会话已经开始,因此发送了标题。结果我有这样的副作用。解决方案之一是彼此分开进行这样的测试。或者更好地使用像硒这样的另一种测试工具进行测试。