【问题标题】:migrating from Delayed Jobs to Sidekiq从延迟作业迁移到 Sidekiq
【发布时间】:2017-12-15 22:00:16
【问题描述】:
我正在从延迟作业迁移到 Sidekiq。我已经有了一些规范,我也想更改它们以与 sidekiq 兼容。
it { expect(Delayed::Job.select{|job| job.handler.match(/MyJob/)}.size).to be 0 }
这基本上检查没有安排 MyJob DelayJobs。我如何在 sidekiq 中为相同的工作测试相同的东西。
【问题讨论】:
标签:
ruby-on-rails
ruby
sidekiq
【解决方案1】:
我对@987654323@ 了解不多,但从您的测试来看,您似乎正在测试您的队列大小是否为 0,对吧?如果是这样,Sidekiq 有一个部分解释了您可以执行的一些测试here,并且根据该页面上的说明,关于您使用 Rspec 的配置,您可以执行类似的操作
it {expect(MyJob.jobs.size).to be_eql 0 }
另外,如果您喜欢更多测试选项,请查看this gem。
【解决方案2】:
使用Sidekiq,如果您使用的是为特定工作设置自己的工人的基本用法,即MyJobWorker。然后在代码中你会像这样使用它:
MyJobWorker.perfom_async(id: 5)
那么在你的规范中,它就像断言工人有那么多工作一样简单:
it { expect(MyJobWorker.jobs.size).to be(0) }
Sidekiq 有一些不错的docs on testing。
为了给出更具体的答案,请提供更多关于您如何设置Sidekiq 工作人员以及如何使用工作人员的代码。