gpt4 book ai didi

ruby - RSpec 3 : expect object. do_something 不引发特定类型的错误

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

我想测试一个特定的方法是否不会引发类 AError 的错误。它可以引发 BError、ArgumentError、几乎任何其他类型的错误,或者没有错误,只是不是 AError。是否有任何未弃用的(从 RSpec 3 开始)的方法来做到这一点?

我试过了

expect { object.do_something }.not_to raise_error(AError)

但是我明白了

ArgumentError:
`expect { }.not_to raise_error(SpecificErrorClass)` is not valid,
use `expect { }.not_to raise_error` (with no args) instead

无参数方法的问题是测试会因任何类型的错误而失败,而它应该传递除 AError 之外的任何错误。

此文档似乎没有帮助:https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers/raise-error-matcher

老版本的RSpec好像有办法处理这种情况,我不明白新版本的RSpec怎么了。

所以我很困惑。谢谢。

最佳答案

这个特定的语法解决了这个问题:

it 'do_something does not raise AError' do
begin
expect { object.do_something }.not_to raise_error
rescue RSpec::Expectations::ExpectationNotMetError => e
expect(e.message).not_to include 'AError'
end
end

关于ruby - RSpec 3 : expect object. do_something 不引发特定类型的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29952513/

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