2011-07-01 42 views
6

当用户访问/ user/validate时没有正确的post参数时,我的Zend应用程序抛出zend异常。 (我得到标准的“An Error Occurred”消息,在我的布局中框了)。这是故意的。使用PHPUnit和Zend Framework测试异常问题

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

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

当我运行测试,我得到一个消息,说是失败的,“预期例外Zend_Exception异常”。有任何想法吗?

我在文件中有其他测试工作很好...

谢谢!

回答

5

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

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

如果这工作那么就说明你的时间被渲染错误查看例外,因为它被重定向之前包含在代码将不复存在。

+0

谢谢tomjowitt!你在一个! –

+0

有没有类似Symfony的'sfBrowser-> getCurrentException()'检索未捕获异常的方法?验证是否抛出了正确的异常可能也很有用。 – 2011-07-02 02:39:03

2

嗯,也许它只是失败,因为没有例外抛出?

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

+0

+1有关诊断丢失但预期异常的建议。删除注释后,您很可能会看到测试通过。有关错误控制器的其他答案可能是正确的。 –