Introducao ao clojure.test
✅ Definir um teste com deftest
Seção intitulada “✅ Definir um teste com deftest”No namespace de testes:
(ns meu-app.core-test (:require [clojure.test :refer :all] [meu-app.core :as core]))
(deftest soma-deve-funcionar (is (= 4 (core/soma 2 2))))Use lein test ou execute no REPL:
(run-tests)📚 Utilizar :refer :all
Seção intitulada “📚 Utilizar :refer :all”Permite acessar todas as vars de um namespace:
(ns meu-ns (:require [clojure.set :refer :all]))
(union #{1 2} #{2 3});; => #{1 2 3}Use com cuidado para evitar conflitos de nomes.
📏 Boundary tests com checklist
Seção intitulada “📏 Boundary tests com checklist”Verificam limites e bordas da lógica:
(deftest limites-da-soma (are [a b esperado] (= esperado (+ a b)) 0 0 0 1 0 1 -1 1 0 999999 1 1000000))Use are para definir vários casos de teste com clareza.
🧵 Refatorar com some->
Seção intitulada “🧵 Refatorar com some->”A macro some-> é útil para encadear chamadas que podem retornar nil:
(defn obter-nome [usuario] (some-> usuario :perfil :nome))
(obter-nome {:perfil {:nome "Maria"}});; => "Maria"
(obter-nome nil);; => nilEvita NullPointerException e torna o código mais legível.