我有一個類來處理錯誤,包括異常。如果發現異常,我會將異常作爲參數傳遞給我的異常/錯誤處理程序。PHPUnit模擬異常
try {
someTrowingFnc();
} catch (\Exception $e) {
this->error->exception($e);
}
現在我想單元測試這個錯誤處理程序並模擬異常。
我發現很難嘲笑異常,以便我可以控制異常消息,文件和行。
$exceptionMock = $this->getMock('Exception', array(
'getFile',
'getLine',
'getMessage',
'getTrace'
)); // Tried all mock arguments like disable callOriginalConstructor
$exceptionMock->expects($this->any())
->method('getFile')
->willReturn('/file/name');
$exceptionMock->expects($this->any())
->method('getLine')
->willReturn('3069');
$exceptionMock->expects($this->any())
->method('getMessage')
->willReturn('Error test');
代碼的下面總是結果返回NULL
$file = $exception->getFile();
$line = $exception->getLine();
$msg = $exception->getMessage();
有一個變通嘲笑異常或我只是做錯了什麼?
是您的對象拋出異常稱爲? 否則,您可以生成該模擬,但如果沒有引發它,或者您不生成該條件,則該模擬不會發生。 是否可以顯示所有的代碼,或者至少是該代碼的代碼?, 自2011年以來,我一直沒有與phpunit一起工作,所以記住這一點,但我的頭頂,我記得你有一個裝飾器來捕獲一個預期的異常,但你的情況似乎有點不同,你正在產生一個模擬,但是(這是我的假設),你沒有產生拋出異常本身的條件,所以你的斷言會失敗。 – 2014-09-13 03:10:25