无法解析符号:在这种情况下
问题描述:
我是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前的是什么?
答
1.别名
2.使用
你对ns宏的使用不太正确,你有几个选项来修复它。我将在this article建议的
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))
看看其中一些长度解释了这个
答
刚使用require
和refer
(ns com.bluepojo.scratch
(:require [clojure.test :refer :all))
然后简单
(is (= (add-one 3) 4))
(are ...)
:refer
也需要符号从命名空间引用的列表(例如:refer [is are]
)。
太棒了,谢谢! – 2010-12-16 15:29:07
您在':require' sexp中缺少结尾']',现在'use'已被弃用,而':'带有':refer'。 – Zaz 2015-12-17 22:48:09