无法解析符号:在此上下文中

时间:2010-12-16 04:03:11

标签: unit-testing clojure test-is

我是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?

2 个答案:

答案 0 :(得分:13)

您对ns宏的使用不太正确,您有几个选项可以解决它。

我建议其中一个

1。别名clojure.test为更短的

(ns com.bluepojo.scratch
  (:require [clojure.test :as test))

(defn add-one
  ([x] (+ x 1)))

(test/is (= (add-one 3) 4))

2。使用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])。