Szukaj…


jest

is makro jest rdzeń clojure.test bibliotece. Zwraca wartość wyrażenia ciała, wypisując komunikat o błędzie, jeśli wyrażenie zwraca wartość falsey.

(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

Grupowanie powiązanych testów za pomocą makra testującego

Możesz grupować powiązane twierdzenia w deftest testach jednostkowych w kontekście za pomocą makra testing :

(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)))))

Pomoże to wyjaśnić wyniki testu po uruchomieniu. Pamiętaj, że testing musi odbywać się w trakcie deftest .

Zdefiniowanie testu ze zręcznością

deftest to makro do definiowania testu jednostkowego, podobnie jak testy jednostkowe w innych językach.

Możesz utworzyć test w następujący sposób:

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

Tutaj definiujemy test o nazwie add-nums , który testuje funkcję + . Test ma dwa stwierdzenia.

Następnie możesz uruchomić test w ten sposób w bieżącej przestrzeni nazw:

(run-tests)

Lub możesz po prostu uruchomić testy dla przestrzeni nazw, w której znajduje się test:

(run-tests 'your-ns)

Makro are jest również częścią biblioteki clojure.test . Pozwala na tworzenie wielu twierdzeń na podstawie szablonu.

Na przykład:

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

Tutaj (= xy) działa jako szablon który zabierze każdy argument i tworzy is twierdzenie z niego.

Rozszerza do wielu is twierdzenia:

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

Zawiń każdy test lub wszystkie testy za pomocą urządzeń użytkowych

use-fixtures pozwala zawijać każdy deftest w przestrzeni nazw kodem, który działa przed i po teście. Może być stosowany do opraw lub stubowania.

Urządzenia to tylko funkcje, które biorą funkcję testową i uruchamiają ją z innymi niezbędnymi krokami (przed / po, zawijanie).

(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)

W przypadku użycia z :once , zawija całą serię testów w bieżącej przestrzeni nazw z funkcją

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

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

Uruchamianie testów z Leiningen

Jeśli używasz Leiningen, a twoje testy znajdują się w katalogu testowym w katalogu głównym projektu, możesz uruchomić testy przy użyciu lein test



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow