Zend Framework 1 - 如何在功能集成测试中重置视图数据而不重置会话数据?

时间:2017-01-17 06:35:21

标签: zend-framework phpunit integration-testing

我正试图为基于ZF1的项目开发测试。测试已在我之前开发,但我发现它们工作不正常。在测试中调用$this->dispatch('/some-path')会执行控制器的操作,但在多个$this->dispatch()调用之间不会清除视图数据。在视图数据下,我指的是在控制器操作中通过$this->view->assign()分配的数据。我只需要在测试中查看要清除的数据,同时应在$this->dispatch()次调用之间保留会话数据。我试图扩展Zend_Test_PHPUnit_ControllerTestCase::dispatch()并修改它:

public function dispatch($url = null)
{
    // Reset view data
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->view = null;

    return parent::dispatch($url);
}

现在视图数据被重置,但同样的问题变成了响应输出,它会在某些地方积累,并且我从多个控制器动作得到累积结果。

1 个答案:

答案 0 :(得分:0)

我目前的解决方案是:

public function dispatch($url = null)
{
    // Reset previous response
    $this->resetResponse();
    $this->getResponse();

    // Reset view data
    $viewRenderer = Zend_Controller_Action_HelperBroker::getStaticHelper('viewRenderer');
    $viewRenderer->view = null;

    return parent::dispatch($url);
}