2014-08-28 76 views
0

我使用Codeception與REST和Laravel模塊。當測試爲紅色時,Codeception不提供異常信息

當我運行vendor/bin/codeception run並且由於應用程序中存在異常而導致測試爲紅色時,命令行中未提供任何信息。

所以我知道東西是錯的,但不知道究竟是什麼是錯的。更

一點點的細節:
1)當試驗期望不被滿足,正被顯示的錯誤信息就好(例如我期望的結果是JSON但HTML已被代替返回)
2)但是,例如,如果我嘗試將某些內容插入到不存在的數據庫字段中,我只會在命令行中獲取FAIL,而沒有關於失敗原因的信息。

請注意,此類錯誤是可捕獲的異常,而不是致命錯誤,所以我不明白爲什麼Codeception不能顯示錯誤消息。

要找到什麼確切的問題,我有兩個選擇:
1)try-catch塊裹測試(所以我抓住和用手工調試一切) 2)請使用瀏覽器通過手的請求並看到輸出

顯然,這兩個「解決方案」是不可接受的。

我錯過了什麼,是否有這個問題的一個很好的解決方案?

謝謝!

回答

0

有時,測試框架無法訪問信息,因爲應用程序框架沒有提供這些信息。致命錯誤可能會「異常地結束」您的應用程序,並不能確定哪些人期望得到簡單的異常。

我剛纔在這些情況下,做的是看日誌文件:

/var/www/myapp/app/storage/logs/laravel.log 

/var/log/nginx/*.log 
+0

嗨安東尼奧。感謝您的答覆。 但這不違反TDD的整體思路嗎?如果測試沒有提供關於如何使它們變綠的信息,我如何在代碼之前編寫測試? 順便說一句,數據庫異常的例子不是一個致命的錯誤(我甚至可以在我的測試中手工捕獲這個異常) – 2014-08-28 19:56:12

+0

是的,但如果你違反操作系統(內存,磁盤,文件權限,web服務器配置......),你的工具無法爲你做任何事情,不幸的是,這些「規則」並不是每一次都有效。 :) – 2014-08-28 19:59:13