Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPUnit和Zend框架的异常测试问题_Php_Zend Framework_Phpunit - Fatal编程技术网

PHPUnit和Zend框架的异常测试问题

PHPUnit和Zend框架的异常测试问题,php,zend-framework,phpunit,Php,Zend Framework,Phpunit,当用户在没有正确post参数的情况下访问/user/validate时,我的Zend应用程序会抛出一个Zend异常。(我得到了标准的“发生错误”消息,在我的布局中框起来)。这是故意的 我现在正试图用PHPUnit测试这种行为。这是我的测试: /** * @expectedException Zend_Exception */ public function testEmptyUserValidationParametersCauseException() { $this->di

当用户在没有正确post参数的情况下访问/user/validate时,我的Zend应用程序会抛出一个Zend异常。(我得到了标准的“发生错误”消息,在我的布局中框起来)。这是故意的

我现在正试图用PHPUnit测试这种行为。这是我的测试:

/**
 * @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()
的方法来检索未捕获的异常?验证是否抛出了正确的异常可能也很有用。