2013-05-28 2 views
2

У меня есть метод, который запускает двух разных рабочих Sidekiq - один для отправки электронной почты и один для публикации на канал Faye до интерфейса. Я пытаюсь проверить поведение в функции огурца. Код отлично работает в разработке.Как протестировать sidekiq с огурцом

Я включил require 'sidekiq/testing/inline' в features/support/env.rb, чтобы я мог проверить фактические результаты усилий работников. Тест на электронную почту отлично работает (используя шаги электронной почты Spreewald), но я не вижу никаких доказательств того, что другой рабочий был выполнен. Я включил инструкции «logger.debug» в работника, но они не отображаются в log/test.log - есть ли где-то еще, что я должен посмотреть?

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

ответ

2

я был в состоянии управлять своим рабочим Sidekiq в моем огурца испытании путем добавления соответствующего требуется заявление в support/env.rb:

require 'sidekiq/testing' 

При использовании Spork, поместите его в PreFork блоке:

Spork.prefork do 
    # ... 
    require 'sidekiq/testing' 
    # ... 

Затем я написал функцию, которая читала что-то вроде этого:

When I submit the form that adds jobs to the queue 
Then I should see "Your jobs were added to the queue." 
When I wait for the jobs to finish 
And I refresh the page 
Then the completed jobs are listed on the page 

Затем я вручную слейте очередь:

When(/^I wait for the jobs to finish$/) do 
    MySpecialWorker.drain 
end 

Вы также можете быть в состоянии сделать все ваши задания выполняются рядным, добавив Sidekiq::Testing.inline! к вашим после требуют заявлений support/env.rb, но так как я только хотел, чтобы запустить эти работы, я решил вручную запускайте только те, о которых я забочусь.

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