【发布时间】:2016-03-17 09:33:37
【问题描述】:
我想编写测试以检查是否执行了作业。如下所示:
test/jobs/send_remember_email_job_test.rb
test "remember method was sent" do
assert_performed_jobs 0
assert_enqueued_jobs 1 do
SendRememberEmailJob.perform_later('some@mail.com', 0)
end
assert_performed_jobs 1
end
app/jobs/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。提前致谢
【问题讨论】:
-
延迟作业将 db 写入具有
last_error列的delayed_jobs表。如果对您没有帮助,请查看其价值并在此处发布。 -
检查 last_error 列?当 rails 不在数据库中存储测试变量时,我想怎么做。在开发中一切正常,但这里的测试失败了。还有其他想法吗?
-
您是否尝试将
SendRememberEmailJob.perform_later('some@mail.com', 0)更改为SendRememberEmailJob.perform_now('some@mail.com', 0)? -
是的......它没有帮助
标签: ruby-on-rails minitest rails-activejob