Estoy escribiendo un rubygem que pueden elevar una ArgumentError
si los argumentos proporcionados a su método único no son válidos. ¿Cómo puedo escribir una prueba para esto usando RSpec?¿Cómo probar que los argumentos inválidos generan una excepción ArgumentError usando RSpec?
El ejemplo siguiente muestra el tipo de aplicación que tengo en mente. El método bar
espera que un solo argumento booleano (:baz
), del tipo de los que se comprueba para asegurarse de que lo que realmente es un valor lógico:
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
Gracias. ¿RSpec automáticamente tiene acceso a métodos privados? Mi método 'validate_arguments' es privado. –
El método no es privado porque es un método de clase y la palabra clave privada solo se aplica a métodos de instancia. Cree los métodos de instancia de métodos o use 'private_class_method: mymethodname' para hacer que los métodos de clase sean privados. – Ragmaanir
No lo sabía, gracias. –