【发布时间】:2013-12-16 18:03:29
【问题描述】:
有时我想要一个单元测试来确认某些代码引发了异常,而不知道确切的异常类。例如,为了确认它引发了 kind_of?(StandardError) 的异常,我想这样写:
assert_raise StandardError do
my_method
end
如果异常是StandardError 的实例,则此断言通过,但如果异常是StandardError 的子类 实例,则失败。我最好的解决方案是:
begin
my_method
rescue StandardError => error
return
end
assert false, "no error from my_method"
rescue 确实按照我想要的方式处理异常子类,所以这是可行的。但这有点尴尬。有更好的想法吗?
这是 Ruby 1.8.7 中的 Test::Unit::Assertions 模块。
【问题讨论】:
标签: ruby unit-testing exception assertions