2017-03-02 13 views
0

私は別のオブジェクトへのコマンド呼び出しを行うクラスを持っており、これをRSpecでテストしようとしています。最初のメソッドが引数を取るRspecで複数のメソッドをモックする

SendWithUsInviteeMailer.send_invite(invitee_id).deliver

私はこのような何かを書きたいのですが:invitee.idは最初のメソッドの引数として送られる

expect(SendWithUsInviteeMailer).to receive_message_chain(:send_invite, :deliver).with(invitee.id)

を。これを正しくテストするにはどうすればよいですか?メッセージチェーンを使用する方法はありますか?

答えて

1

私はおそらくsend_invite方法をスタブと配達をチェックし、そのような思い:

# config/environments/test.rb 
config.action_mailer.delivery_method = :test 

そして、あなたの仕様で:

before do 
    ActionMailer::Base.deliveries.clear 
    allow(SendWithUsInviteeMailer).to receive(:send_invite).and_call_original 
end 

it 'sends out the right email' 
    expect(SendWithUsInviteeMailer).to receive(:send_invite).with(invitee.id) 
    # perform the action to be tested 
    expect(ActionMailer::Base.deliveries.count).to eq 1 
end 
+0

はSendWithUsがアクションメーラーの種類をメーラーですか?テストのセットアップでは何が起こっていますか?これはおそらくアクションメールを理解していない私と関係がありますか?それは何をするためのものか? – Jwan622

関連する問題