Я тестирую deftype
и defprotocol
в Clojure, но я немного рассола.
Я использую leiningen.Мой основной файл (src/core.clj
) выглядит следующим образом:
(defprotocol Speaker
(say [speaker message]))
(deftype Person [name]
Speaker
(say [_ message] (str name ": " message)))
Мой тестовый файл (test/core.clj
) выглядит следующим образом:
(deftest people-can-talk
(is (= "Peter: hello" (say (Person. "Peter") "hello"))))
Когда я выполняю этот тест (с lein test
) Я получаю следующую ошибку:
Exception in thread "main" java.lang.IllegalArgumentException: Unable to resolve classname: Person, compiling:(my-project/test/core.clj:2)
at clojure.lang.Compiler.analyzeSeq(Compiler.java:6416)
at clojure.lang.Compiler.analyze(Compiler.java:6216)
Мне кажется, это говорит мне о том, что Person
не определено.Но это!Если бы это было не так, разве Clojure не выдал бы ошибку?Есть ли какая-то очевидная синтаксическая ошибка, которую я пропускаю?
Я использую clojure 1.3.0.