0

我在 SimpleTest 中对 Zend_Controller_Action 的一些扩展进行单元测试。我希望能够使用 Redirector 操作助手的 set 方法设置重定向 url,然后使用 Redirector 的 redirectAndExit() 方法在该过程的后期实际重定向。从阅读文档并查看动作控制器、重定向器和响应类中的代码来看,这个过程似乎没有像我预期的那样工作。

这是我编写的 UnitTestCase 方法:

  public function testSetGoToUrl() {

    $request    = new Zend_Controller_Request_Http();
    $response   = new Zend_Controller_Response_Http();
    $controller = new App_Zend_Controller_Action($request, $response, array());

    $controller->getHelper('redirector')->setGoToUrl('/');

  }

App_Zend_Controller_Action 类仅仅是抽象类 Zend_Controller_Action 的具体扩展。我在这里所做的只是实例化控制器并设置重定向 url。正如预期的那样,SimpleTest 报告器首先发送标头。但是这个测试方法会产生一个“headers sent”异常,我不明白为什么。我不知道在这种情况下调用了任何 run() 或 dispatch() 方法。

发送第二组标头的是什么?

4

1 回答 1

0

在测试时,您应该使用Zend_Controller_Response_HttpTestCaseand Zend_Controller_Request_HttpTestCase
Zend_Controller_Response_HttpTestCase::sendHeaders()返回将发送而不是执行实际header()语句的所有标头的数组。

这些也用于Zend_Test_PHPUnit_ControllerTestCase.

于 2010-07-26T07:04:22.293 回答