Как провести модульное тестирование MongoDB с помощью Luminus?
Я, вероятно, упускаю что-то простое, но я не достаточно опытен с clojure, чтобы понять ошибку, которую я получаю.
У меня есть простая настройка приложения luminus clojure с библиотекой Monger для обработки моего подключения MongoDB. Я добавил простой тест, который всегда должен передаваться в мой файл тестов.
(testing "create user"
(let [result (db/create-user "test" "test" "test")]
(is (true? true))))
Это не работает, однако, и выдает следующую ошибку
java.lang.ClassCastException: mount.core.DerefableState cannot be cast to com.mongodb.DB
Я предполагаю, что это связано с тем, что тестовая среда неправильно настраивает базу данных и не работает там. Я провел небольшой поиск, но ничего полезного не нашлось, и в Документах Monger, похоже, нет никакой помощи в тестировании. Я точно знаю, что выше create-user
вызов работает, когда работает в реальной среде.
1 ответ
Похоже, что вы не связываете свою базу данных до запуска тестов:
Я не использовал Luminus, но у меня есть некоторые интеграционные тесты для кода, связанного с базой данных, в которых я заранее инициализирую свое соединение с базой данных:
(ns ^:integration mango.db-test
(:require [clojure.test :refer :all]
[monger.db :as mdb]
[mango.db :as db]
[mango.config :as config]))
(defn db-fixture [f]
(println "Testing DB on " config/db-name)
(db/init)
(f)
(mdb/drop-db @db/DB)
(db/terminate)
)
(use-fixtures :once db-fixture)