Я только недавно начал работать над приложением Clojure с большим количеством баз данных и пытаюсь провести некоторые модульные тесты. В идеале, я бы хотел избежать реального попадания в настоящую базу данных путем насмешек.
Вот пример простого теста:
тест-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))))
Мой вопрос: есть ли способ, изнутри test-core.clj, привязать пользовательскую функцию к 'db / query' так, чтобы core.clj использовал ее, в отличие от определения в db.clj?
Спасибо!