PHPUnit和Zend框架的异常测试问题
当用户在没有正确post参数的情况下访问/user/validate时,我的Zend应用程序会抛出一个Zend异常。(我得到了标准的“发生错误”消息,在我的布局中框起来)。这是故意的 我现在正试图用PHPUnit测试这种行为。这是我的测试:PHPUnit和Zend框架的异常测试问题,php,zend-framework,phpunit,Php,Zend Framework,Phpunit,当用户在没有正确post参数的情况下访问/user/validate时,我的Zend应用程序会抛出一个Zend异常。(我得到了标准的“发生错误”消息,在我的布局中框起来)。这是故意的 我现在正试图用PHPUnit测试这种行为。这是我的测试: /** * @expectedException Zend_Exception */ public function testEmptyUserValidationParametersCauseException() { $this->di
/**
* @expectedException Zend_Exception
*/
public function testEmptyUserValidationParametersCauseException() {
$this->dispatch('/user/validate');
}
当我运行测试时,我收到一条消息,说它失败了,“预期异常Zend_异常”。有什么想法吗
我在文件中还有其他测试,它们工作得很好
谢谢 好吧,也许它只是因为没有引发异常而失败
您是否尝试在没有“@expectedException Zend_Exception”的情况下运行测试?是否存在异常?Zend\u Controller\u Plugin\u ErrorHandler插件为您处理异常,默认的Error\u Controller强制500重定向,这可能意味着您正在测试的异常不再存在。尝试以下单元测试,看看它是否通过:
public function testUnknownUserRedirectsToErrorPage()
{
$this->dispatch('/user/validate');
$this->assertController('error');
$this->assertAction('error');
$this->assertResponseCode('500');
}
如果这样做有效,则表明当您呈现错误视图时,异常将不再存在,因为它包含在重定向之前的代码中。+1获取有关诊断缺失但预期异常的建议。您很可能会在删除注释后看到测试通过。关于错误控制器的另一个答案可能是正确的。谢谢tomjowitt!你一下子就搞定了!是否有类似于Symfony的
sfBrowser->getCurrentException()
的方法来检索未捕获的异常?验证是否抛出了正确的异常可能也很有用。