Я хочу написать тест, чтобы проверить, выполнены ли задания. Это выглядит, как показано ниже:Работы не выполняются. Ruby on Rails
тест/Работа/send_remember_email_job_test.rb
test "remember method was sent" do
assert_performed_jobs 0
assert_enqueued_jobs 1 do
SendRememberEmailJob.perform_later('[email protected]', 0)
end
assert_performed_jobs 1
end
приложение/работа/send_remember_email_job.rb
class SendRememberEmailJob < ActiveJob::Base
queue_as :default
def perform(email,time, task)
UserMailer.delay(run_at:time.hours.from_now).remember_mail(email,task)
end
end
Когда я запускаю тест, я всегда получаю 1 отказ:
1 jobs expected, but 0 was performed.
Expected: 1
Actual: 0
Я не знаю, если это поможет, но я использую delayed_job. Спасибо заранее
отложенной вакансии записи в БД в 'delayed_jobs' таблицы, которая имеет' last_error' столбец. Посмотрите его значение и опубликуйте здесь, если это вам не поможет. –
Проверить столбец last_error? Как я полагаю, это делается, когда рельсы не хранят тестовые переменные в базе данных. В разработке все работает нормально, но здесь тесты терпят неудачу. Любая другая идея? – Aleksander
Вы пытались изменить 'SendRememberEmailJob.perform_later ([email protected]il.com ', 0)' to 'SendRememberEmailJob.perform_now ([email protected]', 0)'? –