ActiveJob::TestHelper
を使っている場合、ActiveJob::Base.queue_adapter
が変わっているので、下記のように:delayed_job
をテスト前に設定します。
そして、Delayed::Worker.delay_jobs = false
にして、ジョブをリアルタイム実行するようにすればOKです。
さらに、after do
で元の設定に戻してあげれば親切かもしれません。
delayed_job_spec.rb
feature 'delayed_jobテスト' do
background do
ActiveJob::Base.queue_adapter = :delayed_job
Delayed::Worker.delay_jobs = false
end
after do
ActiveJob::Base.queue_adapter = queue_adapter_for_test
Delayed::Worker.delay_jobs = true
end
context 'ジョブのテスト', js: true do
feature do
click_on 'ジョブ起動するボタン'
# ジョブの実行結果を確認
expect(job_result_table.success).to be_truthy
end
end
end
試したバージョン:Rails 5.0
参考:
https://github.com/collectiveidea/delayed_job
http://api.rubyonrails.org/v5.0/classes/ActiveJob/TestHelper.html#method-i-queue_adapter