Estoy tratando de especificar comportamientos para los argumentos de línea de comandos que recibe mi script para garantizar que todas las validaciones pasen. Algunos de mis argumentos en la línea de comandos darán como resultado que se invoquen abort
o exit
porque faltan los parámetros proporcionados o son incorrectos.¿Cómo puedo validar las salidas y cancelaciones en RSpec?
Estoy intentando algo como esto que no está funcionando:
# something_spec.rb
require 'something'
describe Something do
before do
Kernel.stub!(:exit)
end
it "should exit cleanly when -h is used" do
s = Something.new
Kernel.should_receive(:exit)
s.process_arguments(["-h"])
end
end
El método exit
está disparando limpiamente la prevención RSpec de validación de la prueba (recibo "SystemExit: salida").
También he intentado con mock(Kernel)
pero eso tampoco está funcionando como me gustaría (no veo ninguna diferencia perceptible, pero eso es probable porque no estoy seguro de cómo exactamente burlarse de Kernel y asegurarme de que el burlado Kernel se usa en mi clase Something
).
Advertencia: Hemos tenido problemas con una solución similar debido presumiblemente RSpec 'exit's cuando fallan las expectativas, por lo que podría terminar rescatando' exit's de RSpec en vez de nuestra propia –