我正在尝试为我的Message模型编写测试。该模型有一个方法'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
吗?
答案 0 :(得分:0)
不,问题是您没有告诉RSpec ContactMailer
应该收到该消息。 double
的参数只是一种为文档目的“命名”双精度的方法,如https://github.com/rspec/rspec-mocks
在这种情况下,您实际上不需要double,因为您可以直接在ContactMailer
类上设置期望,如下所示:
ContactMailer.should_receive(:contact_mail)