2010-12-16 21 views
8

Soy nuevo para Clojure, y estoy teniendo problemas para ejecutar las pruebas unitarias.No se puede resolver el símbolo: es en este contexto

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

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

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

da:

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

¿Qué me falta?

Actualización:

Esto funciona:

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

¿Cómo hacerlo de modo que no tengo que declarar ante la clojure.test es?

Respuesta

12

Su uso de la macro ns no es del todo correcto y tiene varias opciones para solucionarlo. Yo sugeriría una de

1. Alias ​​clojure.test a algo más corto

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

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

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

2. Uso use

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

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

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

Tome un vistazo a this article que explica esto con cierta extensión

+0

Impresionante, gracias! –

+2

Falta un cierre ']' en ': require' sexp y' use' está en desuso ahora en favor de 'require' con': refer'. – Zaz

3

Justo use require y refer

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

Después, simplemente

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

:refer toma también una lista de símbolos para referirse desde el espacio de nombres (por ejemplo, :refer [is are]).

Cuestiones relacionadas