2016-12-14 105 views
0

标题有点不清楚,但是我们继续。使用单元测试从标准PHP函数中捕获错误消息

我正在运行一个基本上运行strpos()的方法的单元测试。就像这样:

return strpos($this->getHeaderLine($headerName), $value) !== false; 

现在我也想看看,如果我提供一个空值会发生什么。当提供一个空字符串,我得到以下信息:

strpos(): Empty needle 

此消息本身是非常明显的,我不想在这里抛出异常。我确实想知道它是否返回了此消息。我该怎么做,或者我需要重写我的方法?

+0

从技术上讲,你可以使用'set_error_handler'和'restore_error_handler'。但是考虑设计这不是一个好的选择。 – xmike

回答

1

尝试以下操作:

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等等。