2016-04-11 2 views
0

У меня есть метод в контроллере рабочих мест, что вынуждает некоторые отсроченные задания для запуска теперьRspec Сообщение неверное число аргументов (при 2, ожидается 1) Запрос Spec Time Dependent

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 

Сво помощью области.

Я пытаюсь проверить это с RSpec и его данный пост способом запроса в запрос спецификации

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 

мой сниппет маршрутов

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) 

и мой 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 %> 

Кажется, что он просит меня передать аргументы для публикации, но у меня их нет. Я просто хочу, чтобы мой метод попал. Я помню, что могу просто отправить сообщение и не указывать параметры в прошлом, но не могу вспомнить, что я сделал, что дает мне ошибку, которую я получаю.

В настоящее время с помощью RSpec 3,2

ответ

0

В большинстве случаев это не очень хорошая идея, чтобы проверить что-то в зависимости от времени, потому точность измерения времени превышает скорость вычислений, особенно при работе с достаточно сложными операциями, такими как перенаправляя работу. Я бы предложил попробовать timecopgem и посмотреть результаты.

+0

Спецификация прошло после того, как я установил ошибку. Согласно отложенной работе, я предполагаю использовать 'Time.zone.now'. Мне не интересно добавлять в приложение другую библиотеку. Спасибо за предложение. – Jngai1297

0

Ответ в том, что я рендеринга JSON неправильно это должно быть format.json { head :no_content } вместо format.json render json: { status: 'success' }

Смежные вопросы