2

将来の日付で実行される 2 つのバックグラウンド ジョブを作成するコントローラー アクションがあります。

バックグラウンドジョブが実行されることをテストしようとしています

    # 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 ==)

なぜか発砲していないようです。

4

1 に答える 1

4

使用してみることができます

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

バックグラウンド ジョブの結果をデバッグする場合、将来実行されるはずのジョブがアサート自体を台無しにしているかどうかを調べるのに役立ちます。完了したら「quiet:false」を外すことを忘れないでください。そうしないと、テストは常にバックグラウンド ジョブの結果を出力します。

于 2013-03-26T18:18:20.547 に答える