所以我製作了一個使用sleep
函數的紅寶石寶石。在我的應用程序中使用gem會導致在我的測試中調用睡眠函數。寶石寶石的特殊測試行爲 - 嘲諷睡眠
處理這個問題的首選方法是什麼?現在,我在應用程序中嘲笑睡眠,但有沒有辦法在實際的寶石代碼中禁用睡眠測試環境?我不認爲我可以使用RACK_ENV
,因爲該寶石不是特定於Web應用程序。
謝謝
所以我製作了一個使用sleep
函數的紅寶石寶石。在我的應用程序中使用gem會導致在我的測試中調用睡眠函數。寶石寶石的特殊測試行爲 - 嘲諷睡眠
處理這個問題的首選方法是什麼?現在,我在應用程序中嘲笑睡眠,但有沒有辦法在實際的寶石代碼中禁用睡眠測試環境?我不認爲我可以使用RACK_ENV
,因爲該寶石不是特定於Web應用程序。
謝謝
正如你所說,很難知道你是否真的處於類似測試的環境中,所以解決方案不要嘗試:提供一種方法,允許你的寶石用戶指示睡眠不應該發生。
你可以嘗試自動檢測你是否應該默認爲不睡覺(例如,如果它看起來像鐵軌被加載並Rails.env.test?
是真實的),而你的寶石還允許用戶顯式地激活的情況下,沒有睡眠模式,你不能自動偵測。
您可以存根sleep
像任何其他方法:
allow_any_instance_of(Object).to receive(:sleep)
更換Object
與被測試類的名稱。
Thanks @spickermann。這就是我目前在我的客戶端應用程序中所做的。我只是覺得有一種方法可以將我的寶石包含在內,這樣任何消費者都不必擔心這樣做 –