簡體   English   中英

如何為調用郵件程序的Model方法編寫模擬

[英]How to write mock for Model method that calls a mailer

我正在嘗試為我的消息模型編寫測試。 該模型具有方法“ send_message”:

def send_message
   ContactMailer.contact_mail(self.name, self.email, self.text, self.ip).deliver
end

在我的rspec文件中,我具有以下內容:

mailer = double(ContactMailer)
mailer.should_receive(:contact_mail)

FactoryGirl.build(:message).send_message

我收到以下錯誤:

 Failure/Error: mailer.should_receive(:contact_mail)
   (Double ContactMailer).contact_mail(any args)
       expected: 1 time with any arguments
       received: 0 times with any arguments

任何想法? 可能是因為我沒有考慮.deliver嗎?

不,問題是您沒有告訴RSpec ContactMailer應該收到該消息。 的說法double只是一個方法來“名”雙對文檔的目的,如在討論https://github.com/rspec/rspec-mocks

在這種情況下,您實際上不需要雙ContactMailer ,因為可以直接在ContactMailer類上設置期望,如下所示:

ContactMailer.should_receive(:contact_mail)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM