2013-03-30 16 views
9

Ein großer Teil meiner Anwendung hängt von Hintergrundaufträgen ab, um Benutzerwebsites zu bearbeiten. Daher muss ich einige Tests schreiben, um diese zu erfassen.Wie testen Hintergrundjobs (Sidekiq) mit Rspec?

erste Frage ist, wie Code zu testen, die in einer Sidekiq Arbeiter-Klasse ist, zum Beispiel app/workers/some_worker.rb

class SomeWorker 
    include Sidekiq::Worker 

    def perform(model_id) 
    ... 
    end 
end 

Zweitens, wie Stummel I-Code wie die folgenden so brauche ich nicht wirklich lief Arbeiter und meine Tests verlangsamen?

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

Antwort

6

Lesen Sie die .

+0

Woops habe ich vermisst, ich sehe ich kann 'work = HardWorker.new; work.perform (1, 2) ', um den Code auszuführen. Immer noch nicht sicher, wie man externe Seiten für die Tests vortäuschen soll. –

+1

Versuchen Sie etwas wie VCR (https://www.relishapp.com/vcr/vcr/docs) –

+1

[vor genannten Sidekiq Wiki Seite zum Testen] (https://github.com/mperham/sidekiq/wiki/Testing). –

8

Werfen Sie einen Blick auf den Edelstein rspec-sidekiq, den ich geschrieben habe, um genau dies zu tun (Test von Sidekiq-Arbeitern).