使用PHPUnit和Zend Framework测试异常的问题

时间:2011-07-01 08:49:45

标签: php zend-framework phpunit

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

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

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

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

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

谢谢!

2 个答案:

答案 0 :(得分:5)

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

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

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

答案 1 :(得分:2)

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

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