2012-11-25 20 views
10

Używam clj-webdriver do testowania w oparciu o Selenium w aplikacji internetowej Clojurescript. Czasami coś jest w samej aplikacji, z którą chcę się bawić, gdy test jest uruchomiony. Widzę, że clj-webdriver ma coś o nazwie (execute-script js args), które pobiera ciąg kodu Javascript i uruchamia go w bieżącej przeglądarce testowej. Testowałem to i wydaje się, że działa. Chciałbym jednak przekazać kod clojurescript do execute-script. Potrzebuję czegoś, co skompiluje moją formę Clojure do kodu Clojurescript.Jak skompilować formularze Clojurescript z poziomu Clojure?

Widzę następujący question tego rodzaju związane. Mówi się, aby użyć funkcji js/emit z sprzęgła. Szukałem sprzęgło i okazało się, że wymienione jedynie w (Widok) w cljs-views.clj próbowałem następujące w repl:

user> (use 'com.ashafa.clutch.cljs-views) 
    nil 
user> view 
    <core$comp$fn__4034 [email protected]> 
user> js/emit 
    CompilerException java.lang.RuntimeException: No such namespace: js, #compiling (NO_SOURCE_PATH:1) 
user> 

To nie jest strasznie zaskakujące, jak js może być w regularnych Clojure namesapce? Ale w jaki sposób mogę użyć tego (lub dowolnego innego) systemu do generowania kodu Clojurescript (javascript), który mogę przekazać do execute-script?

Odpowiedz

4

Użyj cljs.closure/build funkcję:

(use '[cljs.closure :only [build]]) 
(build '(print "hello") {:optimizations :simple :pretty-print true}) 

Istnieje więcej przykładów w komentarzu na dole closure.clj. Istnieją również opcje wysyłania do pliku.

Powiązane problemy