我需要验证对象的状态是否不受预期会产生错误的mutator调用的影响。我以为我能做到:
function testWhatever(){
try{
// setup $obj
$this->expectException(WhateverException::CLASS);
// code that throws
}finally{
// assert that $obj's state is still valid
}
}
但我立即意识到,如果finally
中的代码也因任何原因而抛出,它肯定会在PHPUnit中产生一些问题(确实如此)。
在抛出异常之后,我可以选择执行某些断言,可能没有过于杂乱的try / catch / rethrow而且没有重复"抛出的代码"两次?具有与以下相同功能的东西,这是不允许的:
function testWhatever(){
try{
// setup $obj
$this->expectException(WhateverException::CLASS);
// code that throws
}finally{
$this->expectException(null);
// assert that $obj's state is still valid
}
}
答案 0 :(得分:1)
您可以使用普通的try
/ catch
/ finally
function testFoobar()
{
// setup code
try {
// code that throws
$this->fail("Code didn't throw!");
} catch (ExpectedException $e) {
// verify exception message
} finally {
// verify other things
}
}
答案 1 :(得分:0)
您可以使用两个测试并使它们相互依赖(只需在Exception
上成功完成第一次测试
/**
* @depends testWhatever
*/
public function testSomethingAfterException() {
// more tests to run
}