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



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow