Sidekiqのジョブを走らせたくないけどキューイングだけ確認したいときは Sidekiq::Testing.fake を使うと良さそう
Sidekiqを使っていて,slack通知をsidekiqのジョブとして行うようにしました.
しかしそのジョブを実行するAPIのテストを回すと,テストなのにジョブがキューイングされてslack通知が来てしまいました.
ただテストを回したいのにアプリケーションと同じようにジョブが振る舞っていたので,テストのときだけジョブを無効にするか,env=testで動作させるいい方法を探していたら,Sidekiq::Testing.fake!
を使うと良さそうだとわかりました.
こんな感じでリクエスト送ってるところを囲ってあげるとジョブの中身は実行されません.ジョブの中身のテストだけ別途書いてあげれば良さそうです.
Sidekiq::Testing.fake! do post "/api/v1/xxx", params: { ... } # slack通知を伴うAPI end
ここではジョブのキューイングだけを確認するだけで良さそうです.
キューイングされたジョブの個数を取得する場合はこんな感じです!
XXXXWorker.jobs.size
よくできてますよね...感動しました.
必死に
envがdevのdockerコンテナを落とす => envをtestに設定して立ち上げ直す => テストが終わったらまたenvがdevのものを立ち上げる
とかそういうのを試行錯誤していました...