9

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

我如何做到这一点,这样我就不必在 is 之前声明 clojure.test 了?

4

2 回答 2

13

您对 ns 宏的使用不太正确,您有几个选项可以修复它。我会建议其中之一

clojure.test1.更短的别名

(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))

看看这篇文章,它在一定程度上解释了这一点

于 2010-12-16T04:37:34.893 回答
4

只需使用requirerefer

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

然后简单

(is (= (add-one 3) 4))
(are ...)

:refer还需要从命名空间引用的符号列表(例如:refer [is are])。

于 2014-12-28T17:44:37.180 回答