2012-06-27 10 views

Antwort

17

is ist ein Makro, das nach dem Symbol thrown? in seinem Körper sucht und Tests baut. thrown? ist eigentlich keine Funktion, die Sie anrufen können. Das Standardverhalten von is schlägt den Test fehl, wenn eine Ausnahme ausgelöst wird, nach der gesucht wurde. Sie können also einfach (not (thrown? aus dem obigen Beispiel entfernen und erhalten das Ergebnis, nach dem Sie suchen.

9

thrown? ist eine besondere Behauptung, die nach is auftauchen müssen, so können Sie in anderen Ausdrücken nicht verschachtelt es, so im Rahmen des is Makro, die zweite Behauptung wird das Symbol nicht verstehen geworfen ?.

Man könnte einfach sagen:

(deftest main-test 
    (is (thrown? Exception (throw (Exception. "stuff")))) 
    (is (= 5 (+ 2 3)))) 

Wenn eine Ausnahme in (+ 2 3) geworfen wird, wird clojure.test melden 1: Fehler und 0: fehlschlagen und die Stack-Trace-Dump.

Beachten Sie auch, dass Ihre (throw Exception "stuff") nicht korrekt ist - Sie müssen die Ausnahme korrekt innerhalb des Wurfes konstruieren.

Verwandte Themen