Как настроить прибор для группы тестов в 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 - метод, который будет вызван до запуска любых тестов, и ему будет передана функция для вызова, которая вызовет все тесты.

Другие вопросы по тегам