Mam metodę, która wykonuje pewne czynności na modelu Cat aw przypadku niewłaściwego wejścia podnosi wyjątek:Jak mogę "oczekiwać" czegoś, co podnosi wyjątek w RSpec?
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
end
Co chcę zrobić, to sprawdzić, czy metoda zmiana statusu Koty, tak jak:
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
it { expect { eat(what: nil) }.not_to change(cat, :status) }
end
Problem polega na tym, że ponieważ eat(what: nil)
spowoduje zgłoszenie wyjątku, drugie it
zakończy się niepowodzeniem bez względu na wszystko. Czy możliwe jest zignorowanie wyjątku i sprawdzenie jakiegoś warunku?
wiem, że to możliwe, aby zrobić coś takiego:
it do
expect do
begin
eat(what: nil)
rescue
end
end.not_to change(cat, :status)
end
Ale to jest zbyt brzydka.
Co powiesz na "to {spodziewać się {zjeść (co: nil) zero ratunku} .not_to zmienić (cat,: status)}"? – awendt
"dobry", czy możesz napisać to jako odpowiedź? – Andrew
W 'Test/Unit', istnieje ładne twierdzenie," assert_raise ", myślę. –