2013-02-28 42 views
1

我有一個控制器操作,可以創建2個後臺作業,以便在未來的日期運行。延遲:: Worker.new.work_off是否有將來run_at時間的工作?

我想測試的後臺作業的車子撞到

# spec/controllers/job_controller_spec.rb 

    setup 
    post :create, {:job => valid_attributes} 
    Delayed::Job.count.should == 2 
    Delayed::Worker.logger = Rails.logger 
    #Delayed::Worker.new.work_off.should == [2,0] 

    Delayed::Worker.new.work_off 
    Delayed::Job.count.should == 0 # this is where it fails 

這是錯誤:

1) JobsController POST create with valid params queues up delayed job and fires 
    Failure/Error: Delayed::Job.count.should == 0 
    expected: 0 
    got: 2 (using ==) 

出於某種原因,現在看來似乎不點火。

回答

3

你可以嘗試使用

Delayed::Worker.new(quiet: false).work_off 

調試你的後臺作業的結果,這可以幫助你找出如果他們應該在未來的運行實際上與斷言搞亂本身。 完成後不要忘記取消「quiet:false」,否則測試將始終輸出後臺作業的結果。

+0

謝謝!這個提示對我來說很有用,可以幫助我找出一個失敗的測試。 – 2014-09-17 20:40:52

+0

我很高興它對除我以外的任何人都有用:D – Miguelgraz 2014-09-17 21:16:39