我想 stub 发送电子邮件并返回示例电子邮件结果以供进一步处理。
鉴于我有:
message = GenericMailer.send_notification(id).deliver!
我想做类似的事情:
allow(GenericMailer).to receive_message_chain(:send_notification, :deliver)
.and_return(mail_result_no_idea_what_is_like)
但是上面的函数显然失败了,
GenericMailer does not implement: deliver
还是deliver!试过。我想返回一些数据,因为我需要测试类似(和更多)的东西:
message.header.select{|h| h.name == "Date"}.try(:first).try(:value).try(:to_datetime).try(:utc)
最佳答案
GenericMailer.send_notification
正在返回 ActionMailer::MessageDelivery
类的对象rails 5.1.4
和 rspec 3.6.0
示例
it 'delivers notification' do
copy = double()
expect(GenericMailer).to receive(:send_notification).and_return(copy)
expect(copy).to receive(:deliver!) # You can use allow instead of expect
GenericMailer.send_notification.deliver!
end
关于ruby-on-rails - 如何在 RSPEC 中 stub Mailer 交付,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53002020/