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 - 如何在功能集成测试中重置视图数据,而不是会话数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Zend Framework 中生成用于重置密码的随机密码或临时 URL?

Zend Framework 2 发送电子邮件模板

Zend Framework儿童系列不能保湿

Zend framework 1.11 订购单

zend framework如何安装?

如何使用 Zend Framework 检查登录的在线用户