ruby - 通过 Test::Unit 查看异常消息是否与 Ruby 中的已知字符串匹配

标签 ruby unit-testing testunit

假设我有一个用 Ruby 编写的方法,我通过 Test::Unit 进行单元测试。此方法可以出于多种原因引发 SystemExit,但唯一标识它在 Exception 中抛出它的原因。我知道我可以这样做来断言引发异常:

assert_raises(SystemExit) { boo() }

但这匹配 boo() 抛出 SystemExit 的所有情况。如何区分 boo() 执行 abort("reason 1")abort("reason 2") 的情况?

最佳答案

只需用begin..rescue捕获它即可。如果需要重复执行,请编写一个辅助方法。

begin
  boo()
rescue SystemExit => e
  assert_equal(e.message, "This message")
end

关于ruby - 通过 Test::Unit 查看异常消息是否与 Ruby 中的已知字符串匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8425742/

相关文章:

ruby - 如何根据 ruby​​ 中的条件加入一些(不是全部)数组元素?

ruby - 将字符串转换为货币格式

c# - 具有属性但没有逻辑单元可测试的类吗?

unit-testing - 是否可以在同一个单元测试中模拟 Controller 并访问 FormTagLib?

ruby-on-rails - Rspec 与 TestUnit

ruby - Test::Unit 中的全局设置和拆卸 block

ruby - 为什么在我输入错误的字符串后 IRB 不工作?

ruby-on-rails - rvm编译安装ruby 2.5.0出错

javascript - Jasmine 测试中的 document.body 是什么?

ruby-on-rails - 在 Rails/Padrino 控制台运行测试用例