![](/img/trans.png)
[英]How to write rspec mock for method that calls a mailer in rails 5
[英]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.