使用单元测试捕获来自标准 PHP 函数的错误消息
Catch error messages from standard PHP functions with a Unit test
标题有点不清楚,但我们开始吧。
我正在 运行 对本质上运行 strpos()
的方法进行单元测试。像这样:
return strpos($this->getHeaderLine($headerName), $value) !== false;
现在我还想看看如果我提供一个空值会发生什么。当提供空字符串时,我收到以下消息:
strpos(): Empty needle
这条消息本身已经很清楚了,我不想在这里抛出异常。我确实想知道它是否返回了这条消息。我将如何着手进行此操作,还是需要重写我的方法?
尝试以下操作:
public function testWarning()
{
$this->expectException(PHPUnit_Framework_Error_Warning::class);
$this->expectExceptionMessage("Empty needle");
strpos('meh', '');
}
这个测试通过了,但是如果你注释掉期望值,它就失败了。 PHPUnit框架中还有更多相关的类,如PHPUnit_Framework_Error_Deprecated
、PHPUnit_Framework_Error_Notice
等。
标题有点不清楚,但我们开始吧。
我正在 运行 对本质上运行 strpos()
的方法进行单元测试。像这样:
return strpos($this->getHeaderLine($headerName), $value) !== false;
现在我还想看看如果我提供一个空值会发生什么。当提供空字符串时,我收到以下消息:
strpos(): Empty needle
这条消息本身已经很清楚了,我不想在这里抛出异常。我确实想知道它是否返回了这条消息。我将如何着手进行此操作,还是需要重写我的方法?
尝试以下操作:
public function testWarning()
{
$this->expectException(PHPUnit_Framework_Error_Warning::class);
$this->expectExceptionMessage("Empty needle");
strpos('meh', '');
}
这个测试通过了,但是如果你注释掉期望值,它就失败了。 PHPUnit框架中还有更多相关的类,如PHPUnit_Framework_Error_Deprecated
、PHPUnit_Framework_Error_Notice
等。