Невозможно разрешить символ: в этом контексте - PullRequest
9 голосов
/ 16 декабря 2010

Я новичок в 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 до того, как?

Ответы [ 2 ]

13 голосов
/ 16 декабря 2010

Вы используете макрос ns не совсем правильно, и у вас есть несколько вариантов, чтобы это исправить. Я бы предложил один из

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

Взгляните на эту статью , которая довольно подробно объясняет это

4 голосов
/ 28 декабря 2014

Просто используйте require и refer

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

Тогда просто

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

:refer также принимает список символов для ссылки изпространство имен (например, :refer [is are]).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...