Ich habe eine Methode, die einige Aktionen auf Cat Modell und bei falscher Eingabe führt eine Ausnahme auslöst:Wie erwarte ich etwas, das in RSpec eine Ausnahme auslöst?
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
end
Was ich tun möchte, ist, ob diese Methode ändern Katzen-Status zu überprüfen, wie folgt aus:
context "hungry cat" do
it { expect { eat(what: nil) }.to raise_error }
it { expect { eat(what: nil) }.not_to change(cat, :status) }
end
das Problem ist, dass seit eat(what: nil)
eine Ausnahme erhöhen die zweite it
wird umhin, egal was passiert. Also, ist es möglich, Ausnahmen zu ignorieren und einige Bedingungen zu überprüfen?
Ich weiß, dass es möglich ist, wie etwas zu tun:
it do
expect do
begin
eat(what: nil)
rescue
end
end.not_to change(cat, :status)
end
Aber es ist viel zu hässlich.
Wie wäre es 'es {erwarten {essen (was: null) Rettung nil} .not_to Änderung (Katze,: Status)}'? – awendt
@awendt gut, könnten Sie es als Antwort posten? – Andrew
In 'Test/unit', gibt es eine schöne Behauptung ist,' assert_raise', glaube ich. –