LoginSignup
7
9

More than 5 years have passed since last update.

delayed_jobをfeature specでテストする

Posted at

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

7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9