开发者

Unable to resolve symbol: is in this context

I'm brand new to Clojure, and I am having a bit of trouble getting unit tests running.

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

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

(is (= (ad开发者_JAVA技巧d-one 3) 4))

gives:

java.lang.Exception: Unable to resolve symbol: is in this context

What am I missing?

Update:

This works:

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

How do I make it so that I don't have to declare clojure.test before the is?


Your use of the ns macro is not quite correct and you have several options to fix it. I would suggest one of

1. Alias clojure.test to something shorter

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

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

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

2. Use use

(ns com.bluepojo.scratch
  (:use [clojure.test :only [is]]))

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

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

Take a look at this article which explains this at some length


Just use require and refer

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

Then simply

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

:refer also takes a list of symbols to refer from the namespace (e.g. :refer [is are]).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜