尝试使用delay_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))
现在,我在使用它时遇到了错误。(双“ mailer”收到意外消息:带有(无参数)的deliver_later)
只是
expect(ServiceMailer).to receive(:new_user)
对于nil:NilClass,也使用“未定义的方法'deliver_later'”失败
我尝试了一些示例,这些示例使您可以查看是否使用ActiveJob中的test_helper将作业排入了队列,但我还没有设法测试排队的正确作业。
expect(enqueued_jobs.size).to eq(1)
如果包括test_helper,则通过,但不允许我检查它是否发送了正确的电子邮件。
我想做的是:
- 测试正确的电子邮件已排队(或在测试环境中立即执行)
- 具有正确的参数(@user)
有任何想法吗??谢谢