Sidekiq伪模式在rails rspec测试中不工作



我正在尝试测试我的rails代码上的工作,我有以下

RSpec.describe MyJob, type: :job do
  it 'job in correct queue' do
    VCR.use_cassette('mycassette/type') do
      described_class.perform_later(id)
      assert_equal 1, described_class.jobs.size
    end
  end
end

上面给了我一个错误undefined method jobs,我已经测试过了,似乎我正在正确的模式下运行, Sidekiq::Testing.fake?给了我真实的

perform_later意味着您正在使用ActiveJob而不是直接使用Sidekiq,所以您还必须使用ActiveJob的测试助手:https://edgeapi.rubyonrails.org/classes/ActiveJob/TestHelper.html

assert_enqueued_jobs 1 do
  described_class.perform_later(id)
end

或者,您可以通过更改作业定义来完全删除ActiveJob:

class MyJob < ActiveJob::Base
  queue_as :my_queue
  # ...

:

class MyJob
  include Sidekiq::Worker
  sidekiq_options queue: 'my_queue'
  # ...

最新更新