我正在寫一個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