2016-01-26 2 views
2

Я пытаюсь обрезать свою базу данных данных между тестами. Я вижу много вопросов о Google об удалении и о том, как удалить данные, но никто не просто очищает базу данных.уничтожить datomic db для тестовой среды?

я делаю что-то по следующему использованию core.test:

(with-redefs [db/uri "datomic:free://localhost:4334/test_om_asyn101_next" 
       db/conn (d/connect db/uri)] 
    (run-tests 'rtest.core-test)) 

Я уничтожив БД путем изменения URI и создания заново, но уже устали делать это! Благодаря!

+0

Значит ли «между тестами» во время модульного тестирования? – DanLebrero

ответ

1

Существует delete-database fn. См. day of datomic учебник для примера о том, как создать новый в памяти db для каждого теста.

Кроме того, yeller имеет прекрасный пример использования функциональности datomic's "what if" для проведения модульного тестирования.

2

Я использую (delete-database) как предполагает Dani с clojure.test арматурой:

(ns test-util) 
(defn datomic-rollback-fixture [test-fn] 
    ;; setup 
    (run-migrations) 
    ;; run the tests 
    (test-fn) 
    ;; clean up 
    (let [datomic-uri (get-in config/config [:datomic :uri])] 
    (when (string/starts-with? datomic-uri "datomic:mem:") 
     (d/delete-database datomic-uri)))) 

(run-migrations) функция загружает наши определения схемы из файла EDN, который мы определили с помощью conformity. Бит об уничтожении базы данных datomic:mem заключается в том, что я параноик об удалении баз данных из производства случайно.

Тогда в тестовых функций, у нас есть:

(use-fixtures :each test-util/datomic-rollback-fixture) 

(deftest my-test ...) 

Кажется, работает хорошо для меня до сих пор, и много достаточно быстро с базой данных памяти.

+0

Такая паранойя можно успокоить, проведя тесты только в тестовом классе, поэтому никогда не попадаешь в банку, которую вы отправляете на производство. Leiningen может сделать это за вас. –

+0

Говорят, как человек, который недостаточно параноидальный. ;) –

Смежные вопросы