メーラーの1つをテストしていて、メーラーが呼び出されたことを表明するコントローラーテストがあります(email_specの例と非常によく似ています)。
# spec/controllers/friendships_controller_spec.rb
it "sends an email when someone sends you a contact request" do
NotificationMailer.any_instance.should_receive(:contact_request).with(default_user, user)
xhr :post, :create, {:friendship => {:friend_id => user.id}}
end
nil
contact_requestのテンプレートで変数が設定されているため、この仕様は失敗します。つまりcontact_request
、メソッドをモックアップしたにもかかわらず、メソッドは実際にそのテンプレートを実行してレンダリングしているようです。どうして?
違いが生じる場合、テンプレートは実際のアプリケーションで問題なくレンダリングされます。この特定の仕様では、変数はnilにのみ設定されます。