2016-12-14 36 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等等。