我有一个类对另一个对象进行命令调用,我试图在RSpec中测试它。
SendWithUsInviteeMailer.send_invite(invitee_id).deliver
我想写这样的东西:
expect(SendWithUsInviteeMailer).to receive_message_chain(:send_invite, :deliver).with(invitee.id)
其中invitee.id作为参数发送到第一个方法。我该如何正确测试?有没有办法使用消息链?
答案 0 :(得分: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