Clojure: как включить спецификации в глобальном масштабе? - PullRequest
2 голосов
/ 23 октября 2019

Я хотел бы использовать спецификации clojure для проверки ввода моих функций (по крайней мере, во время разработки). До сих пор я сделал следующее: я определил спецификации и в начале функций я поставил утверждения, как в этом примере:

(defn foo [bar]
  (s/assert ::bar bar)
  (do-something-with bar))

где s - псевдоним clojure.spec.alpha. По умолчанию эти утверждения, по-видимому, отключены (при запуске модульных тестов с midje ). Я могу включить их, поместив (s/check-asserts true) в один из моих файлов. Я не уверен, какова будет тогда область действия этого параметра. Мне кажется неправильным помещать его просто в один из исходных файлов, хотя пока мне кажется, что он работает.

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

Ответы [ 2 ]

2 голосов
/ 24 октября 2019

Также есть системное свойство clojure.spec.check-asserts, которое вы можете установить в true. Это используется для установки начального значения для проверки утверждений. Смотри https://clojure.org/guides/spec#_using_spec_for_validation

1 голос
/ 23 октября 2019

Вызов этой функции является правильным способом глобального включения спецификаций. Я бы поставил его в верхнюю часть файла вспомогательного глобального теста, который требуется для всех ваших тестов, если вы хотите, чтобы он был глобально включен для всех тестов.

...