gpt4 book ai didi

ruby - 如何让assert_raise处理异常子类

转载 作者:数据小太阳 更新时间:2023-10-29 07:34:08 24 4
gpt4 key购买 nike

有时我想通过单元测试来确认某些代码引发了异常,而无需确切了解异常类。例如,为了确认它引发了 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 模块。

最佳答案

正如您在 rubyforge bugtracker ticket [#8716] Add option to Test::Unit::Assertions#assert_raise to allow subclasses from 2007(!) 中看到的那样这是一个仍然开放的功能请求。

如果您真的非常需要它,您可以对功能进行 monkeypatch。

关于ruby - 如何让assert_raise处理异常子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617670/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com