2016-10-03 71 views
0

有時候我有兩種情況:同一個worker運行兩次 - 當用戶發送請求的速度一個接一個的時候。我添加了條件:如果工人已經啓動,並且工人的​​是Importer類 - 不允許第二次啓動隊列。RSpec:測試sidekiq工人的競賽狀況

現在我需要爲它制定一個規範。我認爲,叫水木清華這樣是不是一個好辦法:

before { 2.times { Importer.perform } } 

什麼是測試員工對這種競態條件最好的方法是什麼? (一般是:當您需要運行同樣的查詢兩次或更多時,以何種方式測試Sidekiq工作人員)

回答

0

好的,所以沒有答案。

我決定將它存根。內部導入類我有Sidekiq::Workers.new,所以在內部規格中,我放置了let(:sidekiq_workers)所有工人的參數塊,如queue,​​,args等。

然後在it塊內我調用方法,即檢查這樣的查詢是否已經存在。此測試通過並返回「true」。我有另一個it塊沒有stubbed sidekiq工作者和測試通行證與「錯誤」。