【发布时间】:2012-12-15 00:21:17
【问题描述】:
我用了Mocha,Test::Unit和delayed_job,想测试一下mailer方法是否被执行,像这样:
test "should send info about paid payment" do
payment = Payment.new :contractor_name => "notempty", :address => "notempty"
UserMailer.expects(:send_payment_info)
payment.set_paid!
end
# model method
def set_paid!
self.status = 'paid'
self.paid_at = Date.today
self.save!
UserMailer.delay.send_payment_info self
end
不使用延迟方法测试按预期工作,但使用它(我在初始化配置中有 Delayed::Worker.delay_jobs = !Rails.env.test?)我得到:
NoMethodError:未定义的方法
deliver' for nil:NilClass app/models/payment.rb:33:inset_paid!' test/unit/payment_test.rb:50:in `test_should_send_info_about_paid_payment'
我不知道如何解决这个问题?也许我应该以不同的方式处理 UserMailer?
【问题讨论】:
标签: ruby-on-rails delayed-job mocha.js testunit