2 Stimmen

Ich kann kein einfaches ClojureScript Testbeispiel ausführen

Ich versuche, einen grundlegenden Test auszuführen

https://github.com/cemerick/clojurescript.test

Ich habe ein einfaches Projekt erstellt, wie folgt:

(defproject sampleproj "0.1.0-SNAPSHOT"
  :description "FIXME: Beschreibung schreiben"
  :url "http://example.com/FIXME"
  :license {:name "Eclipse Public License"
            :url "http://www.eclipse.org/legal/epl-v10.html"}
  :dependencies [[org.clojure/clojure "1.5.1"]
                  [org.clojure/clojurescript "0.0-2014"]
                  ]
  :plugins [[lein-cljsbuild "1.0.0"]
          [com.cemerick/clojurescript.test "0.2.2"]]
  :cljsbuild {:builds [{:source-paths ["src-js" "test-js"]
                      :compiler {:output-to "target/cljs/testable.js"
                                 :optimizations :whitespace
                                 :pretty-print true}}]
            :test-commands {"unit-tests" ["phantomjs" :runner
                                          "this.literal_js_was_evaluated=true"
                                          "target/cljs/testable.js"]}}
  )

Beide Ordner src-js und test-js existieren, da ich alle meine Clojurescript-Dateien dort platzieren möchte.

In meinem test-js/sampleproj Ordner habe ich den Beispielltest aus der Dokumentation kopiert:

(ns sampleproj.sampletest
  (:require-macros [cemerick.cljs.test
                    :refer (is deftest with-test run-tests testing test-var)])
  (:require [cemerick.cljs.test :as t]))

(deftest somewhat-less-wat
  (is (= "{}[]" (+ {} []))))

(deftest javascript-allows-div0
  (is (= js/Infinity (/ 1 0) (/ (int 1) (int 0)))))

(with-test
  (defn pennies->dollar-string
    [pennies]
    {:pre [(integer? pennies)]}
    (str "$" (int (/ pennies 100)) "." (mod pennies 100)))
  (testing "assertions are nice"
    (is (thrown-with-msg? js/Error #"integer?" (pennies->dollar-string 564.2)))))

Wenn ich jetzt versuche, die Tests auszuführen

-> % lein cljsbuild test
ClojureScript wird kompiliert.
ClojureScript-Test wird ausgeführt: unit-tests
ReferenceError: Variable cemerick nicht gefunden
  phantomjs://webpage.evaluate():2
  phantomjs://webpage.evaluate():5
  phantomjs://webpage.evaluate():5
ReferenceError: Variable cemerick nicht gefunden
  phantomjs://webpage.evaluate():2
  phantomjs://webpage.evaluate():5
  phantomjs://webpage.evaluate():5
Subprozess fehlgeschlagen

Ich bin ziemlich neu in Clojurescript, also fehlt mir wahrscheinlich etwas.

Update:

Meine Umgebung

-> % lein -v
Leiningen 2.3.4 auf Java 1.7.0_06 Java HotSpot(TM) 64-Bit Server VM

-> % phantomjs -v
1.9.2

-> % java -version
java version "1.7.0_06"
Java(TM) SE Runtime Environment (build 1.7.0_06-b24)
Java HotSpot(TM) 64-Bit Server VM (build 23.2-b09, mixed mode)

0voto

markus Punkte 54

Befinden sich Makros direkt in den clj-Quellen? Danach sollte der Compiler Ihre Cemeric-Makros zu JavaScript kompilieren.

Sie haben wahrscheinlich Abhängigkeiten direkt in project.clj

0voto

Julian Leviston Punkte 1646

Dies wurde nicht beantwortet, also werde ich es tun. Sie müssen Ihre Abhängigkeit für clojurescript.test angeben: [com.cemerick/clojurescript.test "0.3.1"]

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X