結論
あるspecファイルだけで一時的に queue_adapter
を変更したい場合は
require 'spec_helper'
RSpec.describe HogeJob do
include ActiveJob::TestHelper
Rails.application.config.active_job.queue_adapter = :test # <= これ
it do
perform_enqueued_jobs do
HogeJob.new.perform("my")
end
end
end
のように設定すること。
悪い例
次のように設定してはいけない。他のspecまで影響を受けてしまい、 :test
アダプター以外を使う前提でテストが書かれている場合にテストが通らなくなってしまった。
require 'spec_helper'
RSpec.describe HogeJob do
include ActiveJob::TestHelper
ActiveJob::Base.queue_adapter = :test # <= ダメ
it do
perform_enqueued_jobs do
HogeJob.new.perform("my")
end
end
end
理由
誰か教えて
ちなみに
すべてのspecに queue_adapter
の変更を反映したい場合は普通 config/environments/test.rb
で設定するよね。
今回は一部のspecでのみ、変更したくなって上記のハマりポイントを踏んだ。