Zend framework PHPUnit Zend框架控制器测试-断言最后使用的控制器失败<&引用;“错误”>;-显示错误

Zend framework PHPUnit Zend框架控制器测试-断言最后使用的控制器失败<&引用;“错误”>;-显示错误,zend-framework,phpunit,Zend Framework,Phpunit,我们目前正在对zend framework控制器进行单元测试 (我对这个代码示例进行了一点抽象,但想法是一样的……) 我们很高兴地设法使测试失败,并显示了错误消息 断言上次使用的控制器失败… 通过测试: $this->dispatch('/controller/action/param'); $this->assertController('controller'); $this->assertAction('action'); 所以在这个例子中,我如何让真正的错误消息冒泡到

我们目前正在对zend framework控制器进行单元测试

(我对这个代码示例进行了一点抽象,但想法是一样的……)

我们很高兴地设法使测试失败,并显示了错误消息

断言上次使用的控制器失败…

通过测试:

$this->dispatch('/controller/action/param');
$this->assertController('controller');
$this->assertAction('action');
所以在这个例子中,我如何让真正的错误消息冒泡到PHPUnit,也就是说,如果控制器中有错误,我想知道它,而不是调用错误控制器

如果我在application.ini中设置
resources.frontController.params.noErrorHandler=1
,即使有错误,测试也会通过,因为该控制器和操作仍会发生,但只会输出什么(我知道我可以在输出中查找断言,但这不是重点-我想要原始错误)

我试过打开电源

convertErrorsToExceptions="true"
convertNoticesToExceptions="true"
convertWarningsToExceptions="true" 
在phpunit.xml中,也没有欢乐

任何指点都将不胜感激

我希望这一切都有意义


非常感谢。

这也是我遇到的一个问题,有时很难找到错误。我偶然发现了一个解决方案——我修改了错误控制器,以便在生产环境中发生错误时发送电子邮件,但我意外地将其设置为在测试环境中发送——然后,当单元测试中发生这些错误时,我收到一封详细说明错误的电子邮件


您不必使用电子邮件通知,但您可能希望查看错误日志记录。您可以将错误写入日志文件,然后检查日志文件。

不幸的是,Zend_Test_PHPUnit_ControllerTestCase在分派期间会显式覆盖某些frontcontroller选项。相关代码位如下所示:

$controller = $this->getFrontController();
$this->frontController
     ->setRequest($request)
     ->setResponse($this->getResponse())
     ->throwExceptions(false)
     ->returnResponse(false);
因为这是在dispatch()中完成的,所以绝对没有机会更改选项

我使用的一个解决方案是创建我自己的基本ControllerTestCase,它扩展Zend One并从Zend对象复制整个dispatch()函数,然后更改这一行


虽然很凌乱,但它很管用。你可以做一个更精细的版本,从配置中读取一些内容,等等。

谢谢-这肯定会告诉我问题(是什么导致的),并且比在试图跟踪时在代码中插入调试行要简洁一些。我很高兴我不是唯一一个有这个问题的人。愚蠢的问题:哪行代码需要修改,改成什么?@blainarmstrong pass
true
to
throweexceptions