ActionMailer::使用delayed_job时Base.delivers为空



我使用delayed_job在Rails应用程序中发送电子邮件,我想在本地测试电子邮件发送。通常情况下,我只需将mailer配置设置为:test,然后查看ActionMailer::Base.delivers,但问题是,当我调用MyMailer.delay.some_email而不是MyMailer.some_email.deliver时,电子邮件永远不会添加到交付中。我想这是因为我不再调用"delivery",但在使用delayed_job时不应该调用"deliver"。

我所有的制作电子邮件都很好用。只有测试的人没有。

想法?

由于没有作业运行程序在工作,因此在测试环境中不会处理作业。您需要检查作业是否已添加到队列中。

# Call the function
assert_not_equal Delayed::Job.count, 0, "Jobs have been added to the queue"

然后,你可以通过工作来测试工作的效果,就像这样:

Delayed::Worker.new.work_off 1
# Check the job has been done as expected

最新更新