此问题特定于使用PHPUnit。测试用PHPUnit触发错误的方法的返回值
PHPUnit自动将php错误转换为异常。 有没有办法测试碰巧触发php错误的方法的返回值(内置错误或用户生成的错误,通过trigger_error)?代码
实例进行测试:
function load_file ($file)
{
if (! file_exists($file)) {
trigger_error("file {$file} does not exist", E_USER_WARNING);
return false;
}
return file_get_contents($file);
}
这是我想写的测试类型:
public function testLoadFile()
{
$this->assertFalse(load_file('/some/non-existent/file'));
}
我遇到的问题是触发错误导致我的单元测试失败(因为它应该)。但是,如果我试图捕捉它,或者设置一个预期的异常,错误触发后的任何代码都不会执行,所以我无法测试该方法的返回值。
这个例子不起作用:
public function testLoadFile()
{
$this->setExpectedException('Exception');
$result = load_file('/some/non-existent/file');
// code after this point never gets executed
$this->assertFalse($result);
}
任何想法如何,我可以做到这一点?
这不是他所问的。 – jason 2009-08-04 13:48:01
杰森是正确的 - 不完全是我问的,但好的技巧通过使用PHPUnit异常类型检查特定的PHP错误类型。 – dellsala 2009-08-04 15:36:20
@jason:哦,你的权利:-(抱歉:-(很好的答案,顺便说一句(有关使用两个单独的测试是一个很好的观点) @dellsala:谢谢:-) – 2009-08-04 16:32:59