【发布时间】:2010-11-16 13:57:45
【问题描述】:
这个问题是针对使用 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);
}
有什么想法可以实现吗?
【问题讨论】:
标签: php unit-testing exception phpunit