LoginSignup
9
2

More than 5 years have passed since last update.

feature specでActiveJobを実行する

Posted at

RSpecで、featureのテストを書いていたときに、ActiveJobにファイルの生成を依頼して、生成できたらファイルをダウンロードするような処理を書いていたときに、ActiveJobが動いていなくてエラーになったので、どうやったらActiveJobをfeature specを実行中に動かせるかを調査した。

解決策

ActiveJobを即時実行する設定にすればよい

実は、参考になる記事がすでにQiitaに書かれていた。

RSpec でキューイングした ActiveJob を同期実行する

この通りにすればできた。非常にありがたい情報だった:pray:

別の解決策

上記の解決策でできたのだけれど、やはり冗長な感じがした。
もっとシンプルにしたいと思ったので、自分はshared_contextを利用する方式に変更した。

spec/support/perform_enqueued_jobs.rb
shared_context :perform_enqueued_jobs do
  around :each do |example|
    perform_enqueued_jobs { example.run }
  end
end

テスト側で、ActiveJobを使うfeatureのテストの場合は、include_contextを使う。

spec/features/foo_spec.rb
feature 'foo' do
  include_context :perform_enqueued_jobs

  scenario 'ActiveJobを使うシナリオ' do
    # なにかしらの操作
  end
end

こちらのほうが変更点も少なくてシンプルじゃないかなと思う

9
2
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
9
2