clojure
prueba de clojure
Buscar..
es
El is
macro es el núcleo de la clojure.test
biblioteca. Devuelve el valor de su expresión corporal, imprimiendo un mensaje de error si la expresión devuelve un valor 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
Agrupando pruebas relacionadas con la macro de prueba
Puede agrupar aserciones relacionadas en las pruebas unitarias más deftest
dentro de un contexto usando la macro de 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)))))
Esto ayudará a aclarar la salida de prueba cuando se ejecuta. Tenga en cuenta que las testing
deben ocurrir dentro de un deftest
.
Definiendo una prueba con más habilidad.
deftest
es una macro para definir una prueba de unidad, similar a las pruebas de unidad en otros idiomas.
Puede crear una prueba de la siguiente manera:
(deftest add-nums
(is (= 2 (+ 1 1)))
(is (= 3 (+ 1 2))))
Aquí estamos definiendo una prueba llamada add-nums
, que prueba la función +
. La prueba tiene dos afirmaciones.
A continuación, puede ejecutar la prueba como esta en su espacio de nombres actual:
(run-tests)
O simplemente puede ejecutar las pruebas para el espacio de nombres en el que se encuentra la prueba:
(run-tests 'your-ns)
son
La macro are
también es parte de la biblioteca clojure.test
. Te permite hacer múltiples aserciones contra una plantilla.
Por ejemplo:
(are [x y] (= x y)
4 (+ 2 2)
8 (* 2 4))
=> true
Aquí, (= xy)
actúa como una plantilla que tiene cada argumento y crea una is
la afirmación de ella.
Esto expande a múltiples is
afirmaciones:
(do
(is (= 4 (+ 2 2)))
(is (= 8 (* 2 4))))
Envuelva cada prueba o todas las pruebas con accesorios de uso
use-fixtures
permite envolver cada deftest
en el espacio de nombres con el código que se ejecuta antes y después de la prueba. Puede ser utilizado para accesorios o stubbing.
Los accesorios son solo funciones que toman la función de prueba y la ejecutan con otros pasos necesarios (antes / después, ajuste).
(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)
Cuando se usa con :once
, envuelve toda la ejecución de pruebas en el espacio de nombres actual con la función
(defn database-for-tests [all-tests]
(setup-database)
(all-tests)
(drop-database))
(use-fixtures :once database-for-tests)
Ejecutando pruebas con Leiningen.
Si está utilizando Leiningen y sus pruebas están ubicadas en el directorio de pruebas en la raíz de su proyecto, entonces puede ejecutar sus pruebas utilizando la lein test