Как запустить тесты, определенные в attr map of defn в cider? - PullRequest
0 голосов
/ 29 сентября 2018

Используя Cider в Spacemacs, я не могу найти способ запустить тесты, которые определены в карте атрибутов defn.Возьмем для примера это определение функции:

(defn contains-duplicates-a?
  "checks if a vector of strings contain duplicates"
  {:test #(do
            (is (contains-duplicates-a? ["aa" "aa"]))
            (is (not (contains-duplicates-a? ["aa" "aaa"])))
            (is (not(contains-duplicates-a? ["ba" "ab"])))
            (is (not (contains-duplicates-a? ["abcde" "xyz" "ecdab"]))))}
  [word-vector]
  (not(=
        (count word-vector)
        (count (distinct word-vector)))))

Этот стиль написания модульных тестов довольно распространен в моей компании и поддерживается нашей наиболее распространенной настройкой IDE (IntelliJ + Cursive).Нам нравится, когда юнит-тесты близки к коду.

Я не уверен, что это может быть достигнуто с помощью cider-test-defining-forms, так как все, что вы добавляете, должно быть «формы верхнего уровня» (doc ).

Я что-то упустил или просто не поддерживается?

1 Ответ

0 голосов
/ 30 сентября 2018

Если вы хотите вызвать cider-test-run-test в таком определении, просто добавьте defn к cider-test-defining-forms.

. Вы также можете запустить все тесты, которые определены в текущем пространстве имен (включая тесты, определенныекак вы сделали здесь) в CIDER, запустив cider-test-run-ns-tests с аргументом префикса.В текущем стабильном CIDER это означает, что вы можете ввести C-u C-c C-t n или C-u C-c , n.Префиксный аргумент (Cu) необходим, чтобы CIDER не пытался найти тесты в типичном пространстве имен $ {current.namespace} -test.

...