2015-06-13 59 views
0

所以我製作了一個使用sleep函數的紅寶石寶石。在我的應用程序中使用gem會導致在我的測試中調用睡眠函數。寶石寶石的特殊測試行爲 - 嘲諷睡眠

處理這個問題的首選方法是什麼?現在,我在應用程序中嘲笑睡眠,但有沒有辦法在實際的寶石代碼中禁用睡眠測試環境?我不認爲我可以使用RACK_ENV,因爲該寶石不是特定於Web應用程序。

謝謝

回答

2

正如你所說,很難知道你是否真的處於類似測試的環境中,所以解決方案不要嘗試:提供一種方法,允許你的寶石用戶指示睡眠不應該發生。

你可以嘗試自動檢測你是否應該默認爲不睡覺(例如,如果它看起來像鐵軌被加載並Rails.env.test?是真實的),而你的寶石還允許用戶顯式地激活的情況下,沒有睡眠模式,你不能自動偵測。

0

您可以存根sleep像任何其他方法:

allow_any_instance_of(Object).to receive(:sleep) 

更換Object與被測試類的名稱。

+0

Thanks @spickermann。這就是我目前在我的客戶端應用程序中所做的。我只是覺得有一種方法可以將我的寶石包含在內,這樣任何消費者都不必擔心這樣做 –