Zend framework Zend_测试-在PHPUnit的控制器插件中设置重定向

Zend framework Zend_测试-在PHPUnit的控制器插件中设置重定向,zend-framework,redirect,phpunit,Zend Framework,Redirect,Phpunit,我一直在尝试使用PHPUnit来测试应用程序。我有它所有的工作,但不能测试重定向 我的重定向发生在Acl控制器插件中,而不是控制器中的操作中 我已将其更改为使用建议的格式 $r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $r->gotoSimple("index", "index", "default"); 但是这在测试中失败了,响应体是空的,我得到了如下错误 Zend_Dom_Except

我一直在尝试使用PHPUnit来测试应用程序。我有它所有的工作,但不能测试重定向

我的重定向发生在Acl控制器插件中,而不是控制器中的操作中

我已将其更改为使用建议的格式

$r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$r->gotoSimple("index", "index", "default");
但是这在测试中失败了,响应体是空的,我得到了如下错误

Zend_Dom_Exception: Cannot query; no document registered
如果我随后更改测试,使分派方法不会导致调用
gotoSimple()
,那么测试将正确运行

我应该如何在我的应用程序中执行重定向,以便它能够与
Zend_Test
的响应对象一起正确运行

Zend文档分为两行,我试过了,但失败了


谢谢。

要测试是否发生了重定向,您需要添加

$this->assertRedirectTo( 'index' );
运行
$this->dispatch()后

您无法查询响应正文,因为在重定向的情况下它是空的(这就是异常的来源)。
您可以随时检查响应的实际外观

print_r( $this->getResponse() );

请确保您的操作在重定向后返回任何内容,因为重定向后的代码也会执行

$r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
$r->gotoSimple("index", "index", "default");
return;

要测试重定向本身,可以使用断言


请阅读上述手册,因为其中有关于动作挂钩的重要说明。

Ah。这是有道理的。但愿我以前知道这一点-所以测试不遵循重定向?它不会用从重定向获得的内容覆盖响应对象-如果这是你现在的意思-现在我知道我可以继续了。一些文档没有提到的东西!我总是在任何类型的重定向之后返回,我认为我的问题源于这样一个事实:我认为测试将返回重定向的内容。现在我知道这不太好。
$r = Zend_Controller_Action_HelperBroker::getStaticHelper('redirector');
return $r->gotoSimple("index", "index", "default");