2017-07-11 100 views
3

我正在從延遲作業遷移到Sidekiq。有一些規範我已經有了,我也想改變它們以與sidekiq兼容。從延遲作業遷移到Sidekiq

it { expect(Delayed::Job.select{|job| job.handler.match(/MyJob/)}.size).to be 0 } 

這基本上檢查是否沒有MyJob DelayJob預定。我如何在sidekiq中爲同一項工作測試同樣的事情。

回答

0

我對Delayed::Job瞭解不多,但是從您的測試看來,您似乎在測試隊列大小是否爲0,對嗎?如果是這樣,Sidekiq有解釋一些測試,你可以做here,並與該網頁上的說明,關於您使用Rspec的配置的部分,你可以這樣做

it {expect(MyJob.jobs.size).to be_eql 0 }

而且,如果你喜歡更多的測試選項,看看this gem

0

使用Sidekiq如果您使用的基本用法是爲特定作業設置自己的工人,即MyJobWorker。然後,在代碼中你可以使用它像這樣:

MyJobWorker.perfom_async(id: 5) 

然後在你的天賦是作爲斷言工人有許多工作那樣簡單:

it { expect(MyJobWorker.jobs.size).to be(0) } 

Sidekiq有一些很不錯的docs on testing

爲了給出更具體的答案,請包括更多關於如何設置Sidekiq工人的代碼以及您如何使用工人。