2013-03-30 10 views
9

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

最初の質問は、第二に、どのように私は次のようなコードをスタブんので、私は実際に労働者を実行する必要はありません例えばapp/workers/some_worker.rb

class SomeWorker 
    include Sidekiq::Worker 

    def perform(model_id) 
    ... 
    end 
end 

Sidekiqワーカークラスでのコードをテストする方法で、私のテストを遅くする?

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

答えて

6

Testing page in the Sidekiq wikiをお読みください。

+0

私はそれを見逃しました。私は 'work = HardWorker.new;を使うことができます。 work.perform(1、2) 'を実行してコードを実行します。しかし、テストのために外部サイトを捏造する方法についてはまだ分かりません。 –

+1

VCR(https://www.relishapp.com/vcr/vcr/docs) –

+1

[上記のSidekiq wikiページのテスト](https://github.com/mperham/sidekiq/wiki/Testing)のようなものを試してみてください。 –

8

これを正確に行うために作成したrspec-sidekiqの宝石を見てみましょう(Sidekq労働者のテスト)。