无法解析符号:在这种情况下

无法解析符号:在这种情况下

问题描述:

我是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前的是什么?

你对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)) 

看看其中一些长度解释了这个

+0

太棒了,谢谢! – 2010-12-16 15:29:07

+2

您在':require' sexp中缺少结尾']',现在'use'已被弃用,而':'带有':refer'。 – Zaz 2015-12-17 22:48:09

刚使用requirerefer

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

然后简单

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

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