Как настроить прибор для группы тестов в clojure.test
В моих тестах я использую что-то вроде:
;; api.utils
(defn wrap-test-server [f]
(start-test-server)
(f)
(stop-test-server))
;; api.some-endpoint
(use-fixtures
:once
utils/wrap-test-server)
Однако мне нужно продублировать код настройки прибора в каждом тестовом модуле.
Как я могу настроить глобальное крепление для всех тестов?
Или даже лучше, для "пакета", чтобы тесты в api.*
обернуты с приспособлением начала / остановки.
Обратите внимание, что в этом случае меня не волнует "уровень" переноса. Следующие оба будут работать:
;; Wrap around all the tests in the package:
(start-test-server)
(test-1)
...
(test-n)
(stop-test-server)
;; Wrap every test in the package:
(start-test-server)
(test-1)
(stop-test-server)
...
(start-test-server)
(test-n)
(stop-test-server)
1 ответ
Вы определенно можете перетащить эту функцию в другое пространство имен, использовать ее таким образом и сделать что-то вроде этого:
(defn one-time-setup [f]
(start-test-server)
(f)
(stop-test-server))
(use-fixtures :once one-time-setup)
Этот пост в блоге суммирует это довольно хорошо. Из поста:
:once
fixture - метод, который будет вызван до запуска любых тестов, и ему будет передана функция для вызова, которая вызовет все тесты.