Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从延迟作业迁移到Sidekiq_Ruby On Rails_Ruby_Sidekiq - Fatal编程技术网

Ruby on rails 从延迟作业迁移到Sidekiq

Ruby on rails 从延迟作业迁移到Sidekiq,ruby-on-rails,ruby,sidekiq,Ruby On Rails,Ruby,Sidekiq,我正在从延迟的工作迁移到Sidekiq。我已经有了一些规范,我还想修改它们,使之与sidekiq兼容 it { expect(Delayed::Job.select{|job| job.handler.match(/MyJob/)}.size).to be 0 } 这基本上检查是否没有安排MyJob DelayJobs。我怎样才能在sidekiq的同一份工作中测试同样的东西 我对延迟::作业了解不多,但从您的测试来看,似乎您正在测试队列的大小是否为0,对吗?如果是这样的话,Sidekiq会有一

我正在从延迟的工作迁移到Sidekiq。我已经有了一些规范,我还想修改它们,使之与sidekiq兼容

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

这基本上检查是否没有安排MyJob DelayJobs。我怎样才能在sidekiq的同一份工作中测试同样的东西

我对延迟::作业了解不多,但从您的测试来看,似乎您正在测试队列的大小是否为0,对吗?如果是这样的话,Sidekiq会有一个部分解释您可以做的一些测试,并且,根据页面上的说明,关于您使用Rspec的配置,您可以做如下操作

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


另外,如果您喜欢更多的测试选项,请查看。

Sidekiq
如果您使用的是为特定工作设置自己的工作人员的基本用法,即
MyJobWorker
。然后在代码中,您可以这样使用它:

MyJobWorker.perfom_async(id: 5)
然后,在您的规范中,只需断言工人拥有相同数量的作业即可:

it { expect(MyJobWorker.jobs.size).to be(0) }
Sidekiq
有一些不错的功能

为了给出更具体的答案,请包含更多关于如何设置
Sidekiq
工作人员以及如何使用工作人员的代码