0

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考慮していないからでしょうか?

4

1 に答える 1

0

ContactMailerいいえ、問題は、そのメッセージを受け取るべきRSpec に伝えていないことです。への引数は、 https://github.com/rspec/rspec-mocksdoubleで説明されているように、ドキュメントの目的で double に「名前を付ける」方法にすぎません

この場合、ContactMailer次のように期待値をクラスに直接設定できるため、実際には double は必要ありません。

ContactMailer.should_receive(:contact_mail)
于 2013-09-29T17:01:41.470 に答える