10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Rspecでsidekiqのジョブ登録をテストしたいとき

10
Posted at

SidekiqのテストはSidekiq::Testing.fake! を使うと便利です。
テストの前に実行するとRedisにジョブを登録するのではなく、workerオブジェクトのjobsメソッドで、登録されるjobを確認できるようになります。

以下はjobが登録されることを確認するテストです。
HogeWorker.jobs.sizeで登録されたjobの数を取得しています。


require sidekiq/testing
# 省略

before do
  Sidekiq::Testing.fake!
end

context ワーカーのテスト do
  it do
      expect { HogeWorker.new.perform }.to change { HogeWorker.jobs.size }.by(1)
  end
end

上記でもテストできるのですが、beforeブロックでSidekiq::Testing.fake!を実行すると、
グローバルで設定が有効になり他のテストにも影響を与えてしまいました。
なので、使う時はブロックで囲って以下のようにすると、特定のテストだけでSidekiq::Testing.fake!を有効にすることができます。


require sidekiq/testing
# 省略

context ワーカーのテスト do
  it do
    Sidekiq::Testing.fake! do
      expect { HogeWorkernew.perform }.to change { HogeWorker.jobs.size }.by(1)
    end
  end
end
10
4
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
10
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?