Próbuję określić zachowania dla argumentów wiersza poleceń otrzymanych przez mój skrypt, aby upewnić się, że wszystkie sprawdzania poprawności mija. Niektóre z moich argumentów wiersza poleceń powodują wywołanie abort
lub exit
, ponieważ podane parametry są nieprawidłowe lub niepoprawne.Jak mogę sprawdzić poprawność wyjść i przerw w RSpec?
próbuję czegoś takiego, który nie działa:
# 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
Sposób exit
jest wypalania czysto zapobiegając rspec od ważności badania (mam „SystemExit: exit”).
Próbowałem też mock(Kernel)
, ale to też nie działa tak jakbym chciał (nie widzę żadnej zauważalnej różnicy, ale to prawdopodobnie dlatego, że nie jestem pewien, jak dokładnie kpić z Kernela i zadbać o wyśmiewanie się Kernel jest używany w mojej klasie Something
).
Ostrzeżenie: Mieliśmy problemy z podobnym rozwiązaniem, ponieważ RSpec przypuszczalnie 'exit's gdy oczekiwania nie, więc może skończyć ratowania' exit's RSpec zamiast naszego własnego itp –