我正在尝试找到编写 rspec 测试的最佳方法,该测试将指定调用 邮件(mail_content).deliver 并引发异常,这样我就可以断言调用了 Rails.logger。
我知道您不打算模拟被测类,但这是否适用于父类(super class)?
class MyMailer < ActionMailer::Base
default from: 'test@test.com'
default charset: 'UTF-8'
default content_type: 'text/plain'
default subject: 'Test'
def send_email (to, mail_headers_hash, mail_body)
begin
headers mail_headers_hash
mail_content = {to: to, body: mail_body}
mail(mail_content).deliver
rescue ArgumentError, StandardError => e
Rails.logger.error "Failed to email order response - #{e}"
end
end
end
end
最佳答案
使用 RSpec,您可以 stub 引发异常。请参阅以下代码片段:
whatever.should_receive(:do_some_stuff).and_raise(ArgumentError)
关于ruby-on-rails - 如何使用 rspec 和 Ruby 测试父类(super class)方法抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8730575/