我有这段代码根据条件发送电子邮件。如果有错误,它应该捕获无法在数组中发送的帐户:
def process_email(delivery_method_name)
begin
Account::Access.new(account).spam! if delivery_method_name == 'mark_as_spam'
AccountMailer.send("#{delivery_method_name}", account).deliver_now
rescue
@first_notification_error << account.id
@second_notification_failure << account.id
@third_notification_failure << account.id
@fourth_notification_error << account.id
@fourth_notification_failure << account.id
return
end
update_reverification_fields
end
因此,在我的test.rb文件中,我希望能够测试account.id是否被@first_notification_error和其他容器捕获。虽然如何做到这一点并不完全清楚。我在另一篇文章中读到了将此代码放在development.rb和/或test.rb config.action_mailer.raise_delivery_errors = true
中,但我认为这不是我想要的。有没有办法可以在我的测试中引发错误,可能是使用存根或类似的东西?
答案 0 :(得分:0)
你需要模仿AccountMailer
。在调用您正在测试的代码之前放置此行:
delivery_method = 'some method on mailer that you want to mock'
allow(AccountMailer).to receive(delivery_method).and_raise("boom")