13
如何使用rspec测试ActionMailerliver_later
尝试使用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) 有任何想法吗??谢谢