私のアプリケーションの大部分は、ユーザーの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)
rspec-sidekiq 私がこれを正確に行うために作成したgemを見てください(Sidekiqワーカーのテスト)。
Sidekiq wikiのテストページ を読んでください。
Sidekiqは、ワーカーをテストするためのいくつかのオプションを提供します
https://github.com/mperham/sidekiq/wiki/Testing
私にとっては、スペックファイルの先頭にこれらの行を追加した後に機能しました
require 'sidekiq/testing'
Sidekiq::Testing.inline!