На самом деле я реализовал тест для проверки обработки отправки электронных писем DelayedJob. На самом деле тест довольно простой.
Вы должны поставить в очередь 2 задания (вместо 100), одно с высоким приоритетом и одно с более низким приоритетом. Затем вы можете использовать метод «Delayed::Job.work_off» для выполнения первого задания, а затем утверждать, что задание с более низким приоритетом все еще находится в ожидании db. Если вы все еще не знаете, как выполнить задание, взгляните на библиотеку. Код довольно хорошо написан.
Вот фрагмент кода из моего приложения. По сути, мне нужно рассылать электронные письма с напоминаниями пользователям, поэтому мне нужно убедиться, что задания выполняются правильно, а почтовая программа не вылетает из строя. Я поместил этот тест в файл модульного теста memoryr_test.rb, поскольку модель Reminder знает все о том, как ставить в очередь и отправлять электронные письма.
# enqueue the jobs here
assert_difference 'Delayed::Job.count', -1, 'Job should execute successfully' do
assert_difference 'ActionMailer::Base.deliveries.count' do
Delayed::Job.work_off
end
end
# make sure the email was properly delivered
email = ActionMailer::Base.deliveries.last
assert_equal email.to[0], @user.email
assert (Time.now - @reminder.reload.sent_at) < 1.seconds
Ваше здоровье! Надеюсь, это поможет
Алекс
person
Alex Le
schedule
02.08.2010