我想 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/

10-10 20:08