Suche…


ist

Das is Makro ist der Kern der clojure.test Bibliothek. Es gibt den Wert des Rumpfausdrucks zurück und gibt eine Fehlermeldung aus, wenn der Ausdruck einen Falsey-Wert zurückgibt.

(defn square [x]
  (+ x x))

(require '[clojure.test :as t])

(t/is (= 0 (square 0)))
;;=> true

(t/is (= 1 (square 1)))
;;
;; FAIL in () (foo.clj:1)
;; expected: (= 1 (square 1))
;;   actual: (not (= 1 2))
;;=> false

Zusammengehörige Tests mit dem Testmakro gruppieren

Sie können Gruppen Behauptungen in Zusammenhang deftest Unit - Tests in einem Kontext der Verwendung von testing Makro:

(deftest add-nums 
  (testing "Positive cases"
    (is (= 2 (+ 1 1)))
    (is (= 4 (+ 2 2))))
  (testing "Negative cases"
    (is (= -1 (+ 2 -3)))
    (is (= -4 (+ 8 -12)))))

Dies hilft, die Testausgabe beim Ausführen zu klären. Beachten Sie, dass der testing innerhalb eines deftest .

Definieren eines Tests mit Schnellzugriff

deftest ist ein Makro zum Definieren eines deftest , ähnlich dem deftest in anderen Sprachen.

Sie können einen Test wie folgt erstellen:

(deftest add-nums
  (is (= 2 (+ 1 1)))
  (is (= 3 (+ 1 2))))

Hier definieren wir einen Test namens add-nums , der die Funktion + testet. Der Test hat zwei Aussagen.

Sie können den Test dann wie folgt in Ihrem aktuellen Namespace ausführen:

(run-tests)

Oder Sie können einfach die Tests für den Namespace ausführen, in dem sich der Test befindet:

(run-tests 'your-ns)

sind

Das are Makro ist auch Teil der clojure.test Bibliothek. Sie können mehrere Zusicherungen gegen eine Vorlage vornehmen.

Zum Beispiel:

(are [x y] (= x y)  
   4 (+ 2 2)
   8 (* 2 4))
=> true

Hier (= xy) dient als Schablone , die jedes Argument annimmt und schafft eine is Behauptung aus ihm heraus.

Dies erweitert , um mehrere is Behauptungen:

(do 
  (is (= 4 (+ 2 2)))
  (is (= 8 (* 2 4))))

Umhüllen Sie jeden Test oder alle Tests mit Gebrauchsgeräten

use-fixtures deftest kann jeder deftest in den Namespace mit Code eingeschlossen werden, der vor und nach dem Test ausgeführt wird. Es kann zum Fixieren oder Stubbing verwendet werden.

Fixtures sind nur Funktionen, die die Testfunktion übernehmen und mit anderen erforderlichen Schritten ausführen (Vorher / Nachher, Wrap).

(ns myapp.test
  (require [clojure.test :refer :all])

(defn stub-current-thing [body]
  ;; with-redefs stubs things/current-thing function to return fixed
  ;; value for duration of each test
  (with-redefs [things/current-thing (fn [] {:foo :bar})]
    ;; run test body
    (body)))

(use-fixtures :each stub-current-thing)

Bei Verwendung mit :once wird der gesamte Testlauf mit der Funktion in den aktuellen Namespace eingeschlossen

(defn database-for-tests [all-tests]
  (setup-database)
  (all-tests)
  (drop-database))

(use-fixtures :once database-for-tests)

Laufende Tests mit Leiningen

Wenn Sie Leiningen verwenden und sich Ihre Tests im lein test in Ihrem Projektstammverzeichnis befinden, können Sie Ihre Tests mit lein test



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow