2016-05-24 3 views

Antwort

0

Armaturen in clojure.test Funktionen die eine Funktion als Argument nehmen, einige Einstellungen vornehmen, die Funktion aufrufen und dann eine Bereinigung durchführen.

Tests (wie mit deftest erstellt) sind Funktionen, die keine Argumente annehmen und die entsprechenden Tests ausführen.

So eine Befestigung an einem Test anwenden Sie wickeln einfach diesen Test in der Halterung

user> (require '[clojure.test :refer [deftest is testing]]) 
nil 

eine Funktion zu testen:

user> (def add +) 
#'user/add 

ein Test für ihn:

user> (deftest foo (is (= (add 2 2) 5))) 
#'user/foo 

erstellen Sie eine Vorrichtung, die die Mathematik ändert, so dass der Test bestanden werden kann:

user> (defn new-math-fixture [f] 
     (println "setup new math") 
     (with-redefs [add (constantly 5)] 
      (f)) 
     (println "cleanup new math")) 
#'user/new-math-fixture 

ohne die Befestigung der Test nicht bestanden:

user> (foo) 

FAIL in (foo) (form-init5509471465153166515.clj:574) 
expected: (= (add 2 2) 5) 
    actual: (not (= 4 5)) 
nil 

und wenn wir Mathe unserem Test ändern ist in Ordnung:

user> (testing "new math" 
     (new-math-fixture foo)) 
setup new math 
cleanup new math 
nil 
user> (testing "new math" 
     (deftest new-math-tests 
      (new-math-fixture foo))) 
#'user/new-math-tests 
user> (new-math-tests) 
setup new math 
cleanup new math 
nil 
+0

ist es eine Möglichkeit, Vorrichtungen auf eine bestimmte Gruppe von Tests anzuwenden, anstatt alle innerhalb des Namensraums. –

+0

Ersetzen Sie 'foo' durch' # (test1 test2 test3) 'im obigen Beispiel. –

Verwandte Themen