我正在尝试测试我的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'
# ...