Recientemente comencé a trabajar en una aplicación Clojure con muchas bases de datos y estoy intentando realizar algunas pruebas unitarias. Idealmente, me gustaría evitar llegar a una base de datos real burlándome de cosas.Clojure database unit testing/mocking
He aquí un ejemplo de una prueba sencilla:
prueba core.clj
(deftest core-test
(is (> (count (fn-under-test "foo")) 0)))
core.clj
(defn fn-under-test [slug]
(db/query "select * from %1" slug))
db.clj
(defn query [q & args]
(sql/with-connection db
(sql/with-query-results res
[(clause q args)]
(doall res))))
Mi pregunta : hay una manera, desde dentro test-core.clj, para vincular una función personalizada a 'db/query' de modo que core.clj lo use, en oposición a la definición dentro de db.clj?
Gracias!
Gracias! Intenté usar el enlace (y con el enlace) el día de hoy, pero no tuve éxito - Seguí recibiendo _Excepción en el hilo "principal" java.lang.Exception: no se pudo resolver var: db/query en este contexto_. – eff
Puedes intentar requerir db.clj en tu prueba, luego usar enlaces. – Jeff
¡Perfecto! : require db resolvió todo. ¡Gracias una tonelada! – eff