2013-09-29 72 views
0

我正在尝试为我的消息模型编写测试。这种模式有一个方法 '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

不,问题是您还没有告诉RSpec ContactMailer应该收到该消息。到double的说法仅仅是“名”的文件目的的双重,在https://github.com/rspec/rspec-mocks

你其实并不需要双在这种情况下,你可以在ContactMailer类作为直接设定期望值讨论的方式如下:

ContactMailer.should_receive(:contact_mail) 
相关问题