2010-12-16 20 views
8

Jestem nowy w Clojure i mam problem z uruchomieniem testów jednostkowych.Nie można rozwiązać symbolu: jest w tym kontekście

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

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

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

daje:

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

Czego mi brakuje?

Aktualizacja:

to działa:

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

Jak zrobić to tak, że nie trzeba deklarować clojure.test zanim jest?

Odpowiedz

12

Twoje użycie makra ns nie jest poprawne i masz kilka opcji, aby to naprawić. Proponuję jeden z

1. Alias ​​clojure.test coś krótszego

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

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

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

2. Korzystanie use

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

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

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

Spójrz na this article który wyjaśnia to w pewnym długości

+0

Awesome, thanks! –

+2

Brakuje zamknięcia ']' w ': require' sexp i' use' jest teraz przestarzałe na rzecz 'require' z': refer'. – Zaz

3

Wystarczy użyj require i

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

Następnie wystarczy

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

:refer pobiera listę symboli odnoszenie z nazw (np :refer [is are]).

Powiązane problemy