Ricerca…


è

Il is macro è il nucleo della clojure.test libreria. Restituisce il valore della sua espressione corporea, stampando un messaggio di errore se l'espressione restituisce un valore falso.

(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

Raggruppare i test relativi con la macro di test

È possibile raggruppare le asserzioni correlate nei test unitari più deftest all'interno di un contesto utilizzando la macro di 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)))))

Ciò contribuirà a chiarire l'output del test durante l'esecuzione. Si noti che il testing deve avvenire all'interno di un punto di deftest .

Definire un test con il risultato migliore

deftest è una macro per la definizione di un test unitario, simile ai test unitari in altre lingue.

È possibile creare un test come segue:

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

Qui stiamo definendo un test chiamato add-nums , che verifica la funzione + . Il test ha due asserzioni.

È quindi possibile eseguire il test in questo modo nello spazio dei nomi corrente:

(run-tests)

Oppure puoi semplicemente eseguire i test per lo spazio dei nomi in cui si trova il test:

(run-tests 'your-ns)

siamo

L' are macro è anche parte del clojure.test biblioteca. Ti permette di fare più asserzioni su un modello.

Per esempio:

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

Qui, (= xy) agisce come un modello che prende ogni argomento e crea una is un'affermazione fuori di esso.

Questo espande multiplo is affermazioni:

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

Avvolgi ogni test o tutti i test con i dispositivi d'uso

use-fixtures consente di racchiudere ogni deftest nel namespace con il codice che viene eseguito prima e dopo il test. Può essere usato per infissi o stub.

Le fixture sono solo funzioni che prendono la funzione di test e la eseguono con altri passi necessari (prima / dopo, 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)

Se utilizzato con :once , esegue l'intera serie di test nello spazio dei nomi corrente con la funzione

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

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

Esecuzione di test con Leiningen

Se si sta utilizzando Leiningen e i test si trovano nella directory di test nella root del progetto, è possibile eseguire i test utilizzando il test lein test



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow