使用delayed_job时,ActionMailer :: Base.deliveries为空

时间:2012-08-28 01:47:25

标签: ruby-on-rails actionmailer delayed-job

我正在使用delayed_job在Rails应用中发送电子邮件,我想测试本地发送的电子邮件。通常我所做的只是将邮件程序配置设置为:test然后查看ActionMailer :: Base.deliveries,但问题是当我调用MyMailer.delay.some_email而不是MyMailer.some_email.deliver时,电子邮件永远不会得到添加到交付。我认为这是因为我不再称之为“交付”,但在使用delayed_job时你不应该叫“交付”。

我的所有制作电子邮件都可以正常使用。只有测试者没有。

思想?

1 个答案:

答案 0 :(得分:2)

在测试环境中没有处理作业,因为没有工作跑步者工作。您需要检查作业是否已添加到队列中。

# 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