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 (= (add-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]
).