2017-02-06 2 views
3

Я установил отдельный database-url для среды разработки и тестирования, и это хорошо работает при запуске моего webapp в REPL и из lein test в командной строке. Вот мой profiles.clj:Как получить emacs cider (режим clojure), чтобы использовать переменные тестовой среды при выполнении тестов?

{:profiles/dev {:env {:database-url "wiki"}} 
:profiles/test {:env {:database-url "wiki-test"}}} 

И свидетельство экземпляра правой базы данных удара (я использую CouchDB):

;; Running the site from the REPL: 
[info] [<0.12149.0>] 127.0.0.1 - - GET /wiki/home-page 200 
[info] [<0.10353.0>] 127.0.0.1 - - GET /wiki/about 200 

;; Running lein test: 
[info] [<0.12026.0>] 127.0.0.1 - - GET /wiki-test/welcome 404 
[error] [<0.12933.0>] Could not open file /usr/local/var/lib/couchdb/wiki-test.c 

Однако, когда я запускать тесты с помощью сидра в Emacs он использует среду разработки и, следовательно, неправильный экземпляр базы данных.

Как исправить это?

ответ

0

Я предлагаю вам использовать with-redefs.

Что-то вроде этого:

(with-redefs [db (get-my-test-db)] 
    (run-my-tests) 

Где db это символ, к которому вы связать вашу дб ручку в тестах.

Эта статья должна быть полезной: Isolating External Dependencies in Clojure

+0

Спасибо, я думаю, что я могу видеть, как это будет работать, но он не будет использовать тестовую среду правильно? Может быть, альтернативный подход - заставить Сидра использовать тестовую среду по умолчанию? –