Прежде всего, извините, если я испорчу какую-то терминологию;Я довольно новичок в Clojure.Я пытаюсь написать очень простой тест с использованием Lazytest, который зависит от привязки var.Кажется, я не могу перепривязать переменную в тестовом файле и заставить тестируемый код использовать эту привязку.
Вот код, который я пытаюсь проверить:
(ns liar-liar.core
(:gen-class))
(def *input-file-name*)
(defn parse-input
"Just print return a var for now..."
[]
*input-file-name*)
(defn -main [& args]
(binding [*input-file-name* (first args)]
(println (parse-input))))
И воттест:
(ns liar-liar.test.core
(:use lazytest.describe)
(:use liar-liar.core))
(binding [*input-file-name* "my-input-file"]
(describe parse-input "Just returns a var"
(it "returns a var"
(= "my-input-file" (parse-input)))))
Когда я пытаюсь запустить этот тест, я получаю эту ошибку:
java.lang.IllegalStateException: Var liar-liar.core/*input-file-name* is unbound.
Интересно, что если я переместу форму привязки:
(ns liar-liar.test.core
(:use lazytest.describe)
(:use liar-liar.core))
(describe parse-input "Just returns a var"
(it "returns a var"
(binding [*input-file-name* "my-input-file"]
(= "FAIL" (parse-input)))))
Тест работает должным образом, но отчетность не идеальна, так как не выводит значение выражения (parse-input) (тест пройден, если я заменю «FAIL» на «my-input-»).file "Хотя):
FAILURE: Namespaces liar-liar.test.core #'liar-liar.core/parse-input Just returns a var returns a var
at liar_liar/test/core.clj line 7
Expression: (binding [*input-file-name* my-input-file] (= FAIL (parse-input)))
Result: false
Local bindings:
{}
Есть ли какой-то другой способ, которым я должен идти о проведении такого рода тестирования?
Спасибо!Dan