我正在写一个RubyGem,如果提供给它的单一方法的参数无效,它可以引发一个ArgumentError
。我如何使用RSpec为此编写测试?如何测试无效参数使用RSpec引发ArgumentError异常?
下面的例子显示了我想到的那种实现。该bar
方法只需要一个boolean变量(:baz
),该类型的检查,以确保它实际上是一个布尔值:
module Foo
def self.bar(options = {})
baz = options.fetch(:baz, true)
validate_arguments(baz)
end
private
def self.validate_arguments(baz)
raise(ArgumentError, ":baz must be a boolean") unless valid_baz?(baz)
end
def self.valid_baz?(baz)
baz.is_a?(TrueClass) || baz.is_a?(FalseClass)
end
end
谢谢。 RSpec是否自动访问私有方法?我的'validate_arguments'方法是私有的。 – 2010-05-16 16:02:05
该方法不是私有的,因为它是一个类方法,private关键字只适用于实例方法。创建方法实例方法或使用'private_class_method:mymethodname'来使类方法保持私有状态。 – Ragmaanir 2010-05-16 19:26:37
我不知道 - 谢谢。 – 2010-05-16 20:17:26