16. Testing

Un caballero que no prueba su espada antes de la batalla es un caballero temerario. En el desarrollo de software, los tests son esa prueba: te aseguran de que tu código hace lo que promete antes de que llegue al campo de batalla. Clojure incluye clojure.test en su librería estándar, así que no necesitas instalar nada. Tu armería ya viene equipada.

Estructura básica

(ns mi-app.core-test
  (:require
    [clojure.test :refer [deftest is testing]]
    [mi-app.core :as core]))

(deftest test-suma
  (testing "Suma básica"
    (is (= 4 (+ 2 2)))
    (is (= 0 (+ -1 1)))))
  • deftest define un test con nombre.

  • testing agrupa aserciones relacionadas con una descripción.

  • is verifica que una expresión sea verdadera.

Ejecutar tests

Desde el REPL:

(require '[clojure.test :refer [run-tests]])
(run-tests 'mi-app.core-test)

Desde el terminal con Deps and CLI:

clojure -M:test

are

Cuando necesitas probar la misma lógica con varios valores, are evita repetir is.

(deftest test-par
  (are [x resultado] (= resultado (even? x))
    2 true
    3 false
    0 true))

Resumen

  • clojure.test viene incluido con Clojure.

  • deftest, testing e is son las herramientas básicas.

  • are simplifica tests con múltiples entradas.

  • Los tests van en un namespace separado con sufijo -test.

Ejercicios

  1. Crea una función palindromo? que compruebe si una palabra es un palíndromo. Escribe 3 tests para ella.

Este trabajo está bajo una licencia Attribution-NonCommercial-NoDerivatives 4.0 International.

¿Me invitas a un café?

Visitantes en tiempo real

Estás solo: 🐱