ruby-on-rails - 如何使用 rspec 和 Ruby 测试父类(super class)方法抛出异常

标签 ruby-on-rails ruby rspec

我正在尝试找到编写 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/

相关文章:

ruby-on-rails - Rails 中的多态连接表?

ruby-on-rails - 没有对象的方法的 Rails 源位置

mysql - 如何在 Rails 中预先填充的数据库上运行测试?

ruby-on-rails - 同步两个 YAML 文件

javascript - 通过下拉菜单和 Ajax 更改用户的角色

ruby - 与 ruby​​ 的多行匹配

mysql - 将 Redmine 自定义字段值获取到文件

javascript - 为什么这个 POST 请求不会向服务器发送 JSON 字符串?

ruby-on-rails - 测试 Resque 时如何区分测试队列和真实队列(使用 rspec 和 rails?)

rspec - 为什么在每个规范都成功时一系列规范会失败?