尝试使用delayed_job_active_record 升级到Rails 4.2。我没有为测试环境设置 delay_job 后端,因为我认为作业会立即执行。
我正在尝试使用 RSpec 测试新的“deliver_later”方法,但我不确定如何。
旧控制器代码:
ServiceMailer.delay.new_user(@user)
新控制器代码:
ServiceMailer.new_user(@user).deliver_later
我曾经这样测试它:
expect(ServiceMailer).to receive(:new_user).with(@user).and_return(double("mailer", :deliver => true))
现在我使用它会出错。(双“邮件程序”收到意外消息:deliver_later with (no args))
只是
expect(ServiceMailer).to receive(:new_user)
'undefined method `deliver_later' for nil:NilClass' 也失败了
我尝试了一些示例,让您可以查看是否使用 ActiveJob 中的 test_helper 将作业排入队列,但我还没有设法测试正确的作业是否已排队。
expect(enqueued_jobs.size).to eq(1)
如果包含 test_helper,这将通过,但它不允许我检查它是否是正在发送的正确电子邮件。
我想做的是:
- 测试正确的电子邮件是否已排队(或在测试环境中立即执行)
- 使用正确的参数(@user)
有任何想法吗??谢谢