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
War es hilfreich?

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
scroll top