Zend Framework 1 - 如何在功能集成测试中重置视图数据,而不是会话数据?
Posted
技术标签:
【中文标题】Zend Framework 1 - 如何在功能集成测试中重置视图数据,而不是会话数据?【英文标题】:Zend Framework 1 - How to reset view data, but not session data in functional integrational tests? 【发布时间】:2017-06-01 02:56:55 【问题描述】:我正在努力为基于 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】:我目前的解决方案是:
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);
【讨论】:
以上是关于Zend Framework 1 - 如何在功能集成测试中重置视图数据,而不是会话数据?的主要内容,如果未能解决你的问题,请参考以下文章