RAILS - Wie tief hat assert_raise Prüfung für eine Ausnahme
-
19-09-2019 - |
Frage
Sollte der folgende Test assert eine Ausnahme geworfen wurde? Auf meinem PC tut es nicht, und ich möchte wissen, ob dieses Verhalten erwartet wird.
def a
raise RuntimeError
end
def b
begin
a
rescue RuntimeError
puts "bummer"
end
end
test "assert this" do
assert_raises RuntimeError do
b
end
end
Lösung
Es ist ein beabsichtigtes Verhalten. assert_raise
nicht überprüft, ob eine Ausnahme irgendwo in der Skriptausführung angehoben wird, es wird geprüft, ob der Block eine abgefangene Ausnahme von bestimmten Typs erhöht.
Mit anderen Worten, es funktioniert nur, wenn Sie die rescue
Anweisung entfernen.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow