web-dev-qa-db-ja.com

Rspecでバックグラウンドジョブ(Sidekiq)をテストする方法は?

私のアプリケーションの大部分は、ユーザーのWebサイトを処理するためにバックグラウンドジョブに依存しているため、これらをカバーするためにいくつかのテストを作成する必要があります。

最初の質問は、 Sidekiq ワーカークラスにあるコードをテストする方法です。たとえば、app/workers/some_worker.rb

class SomeWorker
  include Sidekiq::Worker

  def perform(model_id)
    ...
  end
end

次に、実際にワーカーを実行してテストの速度を落とす必要がないように、次のようなコードをスタブ化するにはどうすればよいですか?

response = HTTParty.get("http://users-site.com", timeout: 30)
13
mind.blank

rspec-sidekiq 私がこれを正確に行うために作成したgemを見てください(Sidekiqワーカーのテスト)。

9
Phil Ostler

Sidekiq wikiのテストページ を読んでください。

8
Mike Perham

Sidekiqは、ワーカーをテストするためのいくつかのオプションを提供します

https://github.com/mperham/sidekiq/wiki/Testing

私にとっては、スペックファイルの先頭にこれらの行を追加した後に機能しました

require 'sidekiq/testing'
Sidekiq::Testing.inline!
1
Unkas