2012-11-25 17 views
10

Sto utilizzando clj-webdriver per eseguire test basati sul selenio su un'app Web Clojurescript. A volte, c'è qualcosa nell'app stessa che voglio essere in grado di giocherellare mentre il test è in esecuzione. Vedo che clj-webdriver ha qualcosa chiamato (execute-script js args) che prende una stringa di codice Javascript e la esegue sul browser di test corrente. Ho provato questo e sembra funzionare. Vorrei passare il codice clojurescript a execute-script. Ho bisogno di qualcosa che compili la mia forma Clojure nel codice Clojurescript.Come si compilano i moduli Clojurescript da Clojure?

Vedo il seguente question questo genere di rapporti. Dice di usare la funzione js/emit dalla frizione. Ho cercato di frizione e l'ho trovato citato solo in (vista) in cljs-views.clj Ho tentato quanto segue in un 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> 

Questo non è molto sorprendente, come potrebbe essere js in una normale namesapce clojure? Ma come faccio a usare questo (o qualsiasi altro) sistema per generare codice Clojurescript (javascript) che posso passare a execute-script?

risposta

4

utilizzare la funzione cljs.closure/build:

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

Non ci sono altri esempi in un commento in fondo a closure.clj. Ci sono anche opzioni per l'output in un file.

Problemi correlati