【发布时间】:2018-02-03 21:26:15
【问题描述】:
这是我想测试其期望的电话:
UserMailer.invoice_paid(user, invoice).deliver_later
:test 模式下的 Rails 5 ActionMailer 行为似乎在 ApplicationMailer 类的每个方法上都返回 nil。这应该没问题,因为我可以像这样存根:
invoice_paid_dbl = double(ActionMailer::MessageDelivery)
allow(UserMailer).to receive(:invoice_paid).and_return(invoice_paid_dbl)
这个期望失败了:
expect(UserMailer).to receive(:invoice_paid).once
当这个通过时:
expect(invoice_paid_dbl).to receive(:deliver_later).once
这不应该是不可能的吗?我认为可能是方法链混淆了 RSpec,但是将行拆分为 this 没有任何效果:
mail = UserMailer.invoice_paid(user, invoice)
mail.deliver_later
将.with(any_args) 添加到存根和期望也没有效果(因为无论如何这是默认设置)。预期失败:1 次,带有任何参数,收到:0 次,带有任何参数。
【问题讨论】:
-
你是如何对方法进行存根的?
标签: ruby-on-rails rspec rspec3 ruby-on-rails-5.2