當使用phpunit進行單元測試時,是否有任何方法對通過調用'error_log(「Message」)'創建的輸出運行測試?有沒有什麼辦法可以在PHPUnit測試中'expect'輸出到error_log?
示例代碼,我的一個功能測試信用卡用Luhn算法:
if($checkLuhn && ($this->_luhn_check($cardNumber) == false)) {
error_log(__METHOD__ . " cardNumber failed luhn algorithm check.");
return false;
}
$ checkLuhn是傳遞一個布爾值來判斷是否做了檢查,_luhn_check()返回如果真$ cardNumber通過。問題是,我在這個函數中有多個測試可以返回false。我可以對返回值使用assertEquals,但也想檢查錯誤發生的原因。
你可以重寫error_log或以某種方式在單元測試中抓取系統日誌輸出嗎?
你的'$ this - > _ luhn_check($ cardNumber)'在那裏拋出一個異常嗎?如果是這樣,您可以獲得該異常並將其記錄在您的測試中。 – Jhn
我認爲你錯過了一些關於你的錯誤檢測/日誌記錄的抽象層次。如果你使用一個類來記錄所有的錯誤,你只需在你的測試中嘲笑那個類。然後,您還要測試該課程,以檢查其是否按預期工作。你想在這裏測試的是錯誤被觸發,而不是觸發錯誤時會發生什麼。 – gontrollez
我同意@gontrollez,絕對應該將代碼從代碼中抽象出來並作爲服務引入。您將能夠編寫更好(更簡單)的測試,另外您將獲得很大的靈活性並可以寫入多個日誌。 –