Я не могу запустить тесты в clojure/midje

Я запускаю тесты с:

lein midje :autotest

И я получаю ошибку:

Исключение в потоке "main" java.lang.Exception: Нет пространства имен: sprint-is.json-export найдено

Файл находится в: sprint-is/src/sprint_is/json_export.clj

Содержит код:

(ns sprint-is.json-export)
(require [[noir.response :as response]])
(defn serialize [value] (response/json value))

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

Пространство имен не найдено: sprint-is.test.json-export найден

Тест находится в: sprint-is/test/sprint_is/json_export.clj

И содержит:

(ns sprint-is.test.json-export
    (:require [sprint-is.json-export :as json-export]))

(fact "module can serialize scalar values"
    (json-export/serialize 123) => 123)

Когда я пытаюсь импортировать его из REPL, он также не может найти пространства имен. Я попытался переименовать файл, переместить файлы, переименовать каталоги, удалить ns (он компилируется, но не работает), спросил на Clojure IRC. Я сравнил код с другими проектами (в том числе работающими на моем компьютере), и он кажется таким же.

Исходный код здесь: https://bitbucket.org/jiriknesl/sprintis

1 ответ

Решение

Я подозреваю, что у вас есть ошибка компиляции в одном из ваших пространств имен sprint-is.json-export

На bitbucket у вас есть это:

(ns sprint-is.json-export)

(require [[noir.response :as response]])

(defn serialize [value] (response/json value))

который не скомпилируется, потому что noir.response а также response не определены.

у тебя должно быть:

(ns sprint-is.json-export
   (:require [noir.response :as response]))

(defn serialize [value] (response/json value))

Если вы настаиваете на использовании require за пределами ns макрос, вы можете сделать следующее, но помните, что это не идиоматическое использование.

(ns sprint-is.json-export)

(require '[noir.response :as response])

(defn serialize [value] (response/json value))
Другие вопросы по тегам