我是Clojure的新手,我在运行单元测试时遇到了一些麻烦。
(ns com.bluepojo.scratch
(:require clojure.test))
(defn add-one
([x] (+ x 1))
)
(is (= (add-one 3) 4))
给出:
java.lang.Exception: Unable to resolve symbol: is in this context
我错过了什么?
更新
这有效:
(clojure.test/is (= (add-one 3) 4))
如何制作它以便我不必在它之前声明clojure.test?
答案 0 :(得分:13)
您对ns宏的使用不太正确,您有几个选项可以解决它。
我建议其中一个clojure.test
为更短的(ns com.bluepojo.scratch
(:require [clojure.test :as test))
(defn add-one
([x] (+ x 1)))
(test/is (= (add-one 3) 4))
use
(ns com.bluepojo.scratch
(:use [clojure.test :only [is]]))
(defn add-one
([x] (+ x 1)))
(is (= (add-one 3) 4))
请查看this article,其中详细说明了这一点
答案 1 :(得分:4)
只需使用require
和 refer
(ns com.bluepojo.scratch
(:require [clojure.test :refer :all))
然后简单地
(is (= (add-one 3) 4))
(are ...)
:refer
还会从命名空间中引用符号列表(例如:refer [is are]
)。