Zoeken…


is

De is macro is de kern van de bibliotheek clojure.test . Het retourneert de waarde van zijn lichaamsexpressie en drukt een foutmelding af als de expressie een valse waarde retourneert.

(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

Groepeer gerelateerde testen met de testmacro

U kunt bij elkaar horende beweringen in deftest unit tests binnen een context met behulp van de testing macro:

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

Dit helpt de testoutput te verduidelijken wanneer deze wordt uitgevoerd. Merk op dat het testing binnen een deftest moet gebeuren.

Een test definiëren met behendigheid

deftest is een macro voor het definiëren van een eenheidstest, vergelijkbaar met eenheidstests in andere talen.

U kunt als volgt een test maken:

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

Hier definiëren we een test genaamd add-nums , die de + -functie test. De test heeft twee beweringen.

U kunt de test vervolgens als volgt uitvoeren in uw huidige naamruimte:

(run-tests)

Of u kunt gewoon de tests uitvoeren voor de naamruimte waarin de test zich bevindt:

(run-tests 'your-ns)

zijn

De are macro is ook onderdeel van de clojure.test bibliotheek. Hiermee kunt u meerdere beweringen doen tegen een sjabloon.

Bijvoorbeeld:

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

Hier, (= xy) fungeert als een matrijs waarvan de argumenten draait en creëert een is bevestiging van.

Dit vergroot om meerdere is beweringen:

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

Verpak elke test of alle tests met gebruik-armaturen

use-fixtures maakt het mogelijk om elke deftest in naamruimte te verpakken met code die vóór en na de test wordt uitgevoerd. Het kan worden gebruikt voor armaturen of stubbing.

Armaturen zijn slechts functies die de testfunctie uitvoeren en deze uitvoeren met andere noodzakelijke stappen (voor / na, 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)

Wanneer gebruikt met :once , verpakt het hele reeks tests in de huidige naamruimte met functie

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

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

Testen uitvoeren met Leiningen

Als u Leiningen gebruikt en uw tests bevinden zich in de testmap in uw project root, dan kunt u uw tests uitvoeren met lein test



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow