💭

rspec-sidekiq が開発環境でも Testing Mode を有効化してしまう問題と対処法

に公開

問題の概要

RSpecでSidekiqのジョブをテストするために
rspec-sidekiq を導入したところ、開発環境でSidekiqがRedisにジョブが入らなくなり、ジョブを実行できなくなりました。

⛔️ WARNING: Sidekiq testing API enabled, but this is not the test environment.

原因

これは、rspec-sidekiqグローバルに Sidekiq::Testing.fake! を有効化してしまうため、テスト以外の環境でも「テストモード」になってしまうのが原因です。

解決策:Gemfile で test 環境のみに限定する

いろいろ試してみたんですが、結果これで解決しました。

Gemfile

group :test do
  gem "rspec-sidekiq"
end

これで、rspec-sidekiqRSpec実行時(RAILS_ENV=test) だけ読み込まれ、
開発環境や本番環境では無効になります。

🎯 結論

rspec-sidekiq を利用する際は「テスト専用Gem」として扱い、group :test に閉じ込めることで、開発・本番環境への副作用を防ぎます。

Discussion