如何在rspec請求花費太長時間測試行爲?我該如何測試(rspec)需要花費太長時間的http請求?
我想用線程來嘲笑這一點:
describe "Test" do
it "should timeout if the request takes too long" do
lambda {
thread1 = Thread.new { #net::http request to google.com }
thread2 = Thread.new { sleep(xx seconds) }
thread1.join
thread2.join
}.should raise_error
end
end
我想確保後「在踢」請求被首次提出,另一個線程在這種情況下僅僅是XX睡眠秒。那麼我應該期待這個請求超時,因爲它執行時間太長了
我認爲有更好的方法來做到這一點。鑑於我所要求的網址並不相關。我只是想測試一下,如果執行時間太長,它確實會超時。
我可以使用stub(),expect()或任何rspec功能來模擬這個嗎?
有什麼辦法,我可以在「塊」傳遞到存根方法
http_request_to_google.stub(:connection).executethisblock(sleep for xx seconds)
.and_throw error ?
任何幫助表示讚賞
沒錯。網絡呼叫本身並不重要。所以「強制它用模擬返回錯誤」意味着當執行太長(或超時)時測試會失敗? – dvliman
這是從你的措辭要求略有混淆。你是否試圖確保你的測試不會花費超過X秒的時間來運行。或者您是否試圖在理論上測試您的網絡通話花費太長時間運行會發生什麼?如果你想測試後者,那麼我給出的例子將爲你做。 –
我想測試後者。哦,我想我需要閱讀更多關於Rspec :: Mocks的信息。謝謝! – dvliman