gpt4 book ai didi

ruby 测试 : Testing for the Absence of a Method

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

在 rspec 和类似的测试框架中,如何测试方法的缺失?

我刚刚开始摆弄 rspec 和 bacon(rspec 的简化版本)。我想定义测试来确认一个类只允许对实例变量进行读取访问。所以我想要一个看起来像这样的类:

class Alpha
attr_reader :readOnly

#... some methods

end

我有点难过:

  it "will provide read-only access to the readOnly variable" do
# now what???
end

我看不出提供的各种类型的测试如何测试访问器方法的缺失。我是 ruby​​ 和 ruby​​ 测试的菜鸟,所以我可能遗漏了一些简单的东西。

最佳答案

在 Ruby 中,您可以使用 obj.respond_to?(:method_name) 检查对象是否响应方法,因此对于 rspec,您可以使用:

Alpha.new.should_not respond_to(:readOnly=)

或者,由于类可以覆盖 respond_to? 方法,您可以更严格,并通过实际调用它并断言它引发来确保没有赋值方法:

expect { Alpha.new.readOnly = 'foo' }.to raise_error(NoMethodError)

参见 RSpec Expectations供引用。

关于 ruby 测试 : Testing for the Absence of a Method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5999513/

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