Модульное тестирование / имитация базы данных Clojure

Я только недавно начал работать над приложением Clojure, загруженным базами данных, и пытаюсь внедрить некоторые модульные тесты. В идеале я бы хотел избежать фактического попадания в реальную базу данных, высмеивая вещи.

Вот пример простого теста:

test-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?

Спасибо!

12
задан eff 22 July 2011 в 21:49
поделиться