2016-04-11 12 views
0

私は今、スコープを使用してRSpecのポスト間違った番号(1を予想、2を与えられた)要求仕様時間依存

def retry_queued 
    @jobs = Delayed::Job.awaiting_retry.update_all(run_at: Time.zone.now) 

    respond_to do |format| 
     format.html { redirect_to jobs_path, notice: "Queued jobs getting retried." } 
     format.json render json: { status: 'success' } 
    end 
    end 

そのを実行するためのいくつかの遅れたジョブを強制的にジョブコントローラ内のメソッドを持っています。

私はルート

resources :jobs, :only => [:index, :destroy] do 
    member do 
     put :run 
    end 
    collection do 
     delete :destroy_failed 
     delete :destroy_all 
     post :retry_queued 
    end 
    end 

の私のスニペットはRSpecのエラーが

1) JobsController POST retry_queued run the queued job 
    Failure/Error: post :retry_queued 
    ArgumentError: 
     wrong number of arguments (given 2, expected 1) 
を下回っている

describe "POST retry_queued" do 
    before do 
     @not_running = Delayed::Job.create(run_at: Time.zone.now - 1.hour) 
     @not_running.update_attribute(:attempts, 1) 
     @from = Delayed::Job.last.run_at 
     sign_in users(:jane) 
    end 

    it "run the queued job" do 
     expect(Delayed::Job.last.run_at.to_s).not_to eq(Time.zone.now.to_s) 
     post :retry_queued 
     expect(Delayed::Job.last.run_at.to_s).to eq(Time.zone.now.to_s) 
    end 
    end 

要求仕様にRSpecの、その与えられた後の要求方法でこれをテストしようとしています

と私のlink_toはそれをタップする

<%= link_to retry_queued_jobs_path, class: "btn btn-default", method: :post do %> 
    <span class="glyphicon glyphicon-refresh"></span> Retry queued jobs 
<% end %> 

投稿に引数を渡すように求めているようですが、私には何もありません。私はちょうど私の方法がヒットするようにしたい。私は過去にparamsを指定する必要はなく、投稿することはできますが、私が行ったことを覚えていないことは、私に間違いを与えていることを覚えています。現在、RSpecの3.2

答えて

0

を使用して

は、ほとんどの場合、それは仕事をrequeueingのようなかなり複雑な操作を扱う場合は特に、時間測定の精度は、計算速度を超えた原因、時間に応じて、何かをテストするためには良い考えではありません。私はtimecopgemを試してその結果を見ることをお勧めします。

+0

仕様でなければなりませんJSONをレンダリングしていますということです。遅れた仕事によると、私は 'Time.zone.now'を使うと思われます。私はアプリに別のライブラリを追加することに興味がありません。提案していただきありがとうございます。 – Jngai1297

0

答えは私が間違ってそれは私がエラーを修正した後、渡されたformat.json { head :no_content }代わりのformat.json render json: { status: 'success' }

関連する問題