如果完成時間超過n秒,我想要失敗(或繼續)RSpec測試。我正在使用這種方法來調試應用程序在測試期間拖延的位置。如何在n秒後失敗或繼續下一次RSpec測試?
- 我需要在事務中包裝測試。我嘗試創建一個
Timeout
塊,但數據庫未被清理,並且線程仍處於打開狀態。也許database_cleaner可以幫助這裏... - 理想情況下,我想用一個自定義消息來代替水豚錯誤(見下文),如
'Forced Timeout'
我知道把fail
在測試,但只有它如果該行被讀取,則工作。相反,如果測試已經在同一條線上,例如10秒,我希望它移動到下一個測試,無論是通過失敗還是調用一些方法。
例豚失敗消息:
1) Exercise Login page - log in as user type
Failure/Error: fill_in "Username", with: @user.name
Capybara::ElementNotFound:
Unable to find field "Username"
你應該在測試中實現超時而不是在測試中,但不管什麼時候需要很長時間。所以如果你長時間運行,進程正在嘗試連接到某個東西,那麼你的HTTP客戶端(或者其他任何東西)應該測試它自己的超時。 – Anthony
@安東尼我同意你的意見,但是在這一點上,我不確定要花多長時間。例如,我在午餐時間運行我的套房,但在2分鐘後進行了10次測試,結果停滯不前。在這種情況下,最後記錄的事情是'ROLLBACK' - 沒有什麼可以說Rollback崩潰了。 – onebree
在做水豚規格時,您希望使用截斷而不是交易 - 尤其是在使用JavaScript驅動程序(如webkit或selenium)的情況下。 https://github.com/jnicklas/capybara#transactions-and-database-setup – max