【问题标题】:Problem testing exceptions with PHPUnit and Zend Framework使用 PHPUnit 和 Zend Framework 测试异常的问题
【发布时间】:2011-07-01 08:49:44
【问题描述】:

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

我现在正在尝试使用 PHPUnit 测试该行为。这是我的测试:

/**
 * @expectedException Zend_Exception
 */
public function testEmptyUserValidationParametersCauseException() {
    $this->dispatch('/user/validate');
}

当我运行测试时,我收到一条消息说它失败了,“预期异常 Zend_Exception”。有什么想法吗?

我在文件中有其他测试工作正常...

谢谢!

【问题讨论】:

    标签: php zend-framework phpunit


    【解决方案1】:

    Zend_Controller_Plugin_ErrorHandler 插件会为您处理异常,默认的 Error_Controller 会强制执行 500 重定向,这可能意味着您正在测试的异常不再存在。试试下面的单元测试,看看是否通过:

    public function testUnknownUserRedirectsToErrorPage()
    {
        $this->dispatch('/user/validate');
        $this->assertController('error');
        $this->assertAction('error');
        $this->assertResponseCode('500');
    }
    

    如果这有效,则表明当您呈现错误视图时,异常将不再存在,因为它包含在重定向之前的代码中。

    【讨论】:

    • 谢谢汤姆乔维特!合而为一!
    • 有没有办法像 Symfony 的 sfBrowser->getCurrentException() 一样检索未捕获的异常?验证是否抛出了正确的异常可能会很有用。
    【解决方案2】:

    好吧,也许它只是因为没有抛出异常而失败?

    您是否尝试在没有“@expectedException Zend_Exception”的情况下运行测试?有没有例外?

    【讨论】:

    • +1 获取有关诊断缺失但预期异常的建议。删除注释后,您很可能会看到测试通过。关于错误控制器的另一个答案可能是正确的。
    猜你喜欢
    • 1970-01-01
    • 2010-12-31
    • 2015-07-26
    • 1970-01-01
    • 1970-01-01
    • 2012-11-18
    • 2015-10-17
    • 2016-04-27
    • 1970-01-01
    相关资源
    最近更新 更多