2014-03-25 34 views
0

我正在嘗試爲使用Sidetiq的Sidekiq作業編寫一些測試,但似乎無法使其工作。我在sidetiq repo上發現了一個處理這個問題的問題,但是沒有人回答它,所以我想我可以將它帶到stackoverflow以獲得一些答案和清晰度。使用TimeCop進行Sidetiq測試

這裏是鏈接到的問題:https://github.com/tobiassvn/sidetiq/issues/72

這裏是將似乎沒有工作代碼:

spec.rb

# sat 1st feb 
Timecop.travel Time.local(2014, 2, 1, 1, 1, 1) do 
    sign_up_and_onboard user[:email], user[:password] 

# sunday 2nd feb, 8pm 
    Timecop.travel Time.local(2014, 2, 2, 20, 1, 1) do 
    puts 'should have fired' 
    end 
end 

worker.rb

recurrence { weekly.day(:sunday).hour_of_day(8) } 

def perform 
    puts 'test' 
end 

再次感謝你的幫助。

回答

1

從您發佈的代碼中可以看出,似乎沒有任何事情真正解僱您的員工。目前還不清楚你的signup_and_onboard方法的作用 - 可能是解僱他們。

我推薦使用sidekiq /測試(見https://github.com/mperham/sidekiq/wiki/Testing),然後通過Sidetiq處理解僱你的員工,使用類似:

Sidekiq::Testing.inline! do 
    expect(
    Sidetiq::Handler.new.dispatch(MyWorker, Time.now) 
).to be_truthy 
end 

你的時空特警塊內。

這是通過檢查Sidetiq代碼庫以便通過足夠的Sidetiq堆棧激發工作人員以獲得我想在測試中看到的行爲的最佳方式。