Estoy trabajando en aprender TDD mientras escribo algunos pequeños programas de ruby. Tengo la siguiente clase:Rspec no funciona, ¿o no sube?
class MyDirectory
def check(dir_name)
unless File.directory?(dir_name) then
raise RuntimeError, "#{dir_name} is not a directory"
end
end
end
y estoy tratando de probarlo con esta prueba rspec.
describe MyDirectory do
it "should error if doesn't exist" do
one = MyDirectory.new
one.check("donee").should raise_exception(RuntimeError, "donee is not a directory")
end
end
Nunca funciona, y no entiendo lo que está mal en la salida de rspec.
Failures:
1) MyDirectory should error if doesn't exist
Failure/Error: one.check("donee").should raise_error(RuntimeError, "donee is not a directory")
RuntimeError:
donee is not a directory
# ./lib/directory.rb:4:in `check'
# ./spec/directory_spec.rb:9:in `block (2 levels) in <top (required)>'
Espero que esto sea algo simple que me falta, pero simplemente no lo estoy viendo.
Eso funciona perfectamente, gracias! – gdziengel
Utilicé 'expect (...). To' en lugar de' expect {...}. To' y esta respuesta finalmente me ayudó a encontrar el error. –
Tenga en cuenta que si usa el paréntesis en lugar de usar un bloque, la excepción puede aparecer. Consulte https://www.relishapp.com/rspec/rspec-expectations/docs/built-in-matchers. La sintaxis del bloque se debe usar para esperar excepciones. –