我正在使用clj-webdriver在Clojurescript网络应用上进行一些基于Selenium的测试。有时,应用程序本身中有一些东西,我希望在测试运行时能够摆弄它。我看到clj-webdriver有一个名为(execute-script js args)
的东西,它接受一串Javascript代码并在当前的测试浏览器上运行它。我测试了这个,它似乎工作。我想将clojurescript代码传递给execute-script
。我需要一些能将我的Clojure表单编译成Clojurescript代码的东西。
我看到以下与question有关的内容。它说要使用离合器的js / emit功能。我搜索了离合器并发现它仅在cljs-views.clj中的(视图)中提到我在重复中尝试了以下内容:
user> (use 'com.ashafa.clutch.cljs-views)
nil
user> view
<core$comp$fn__4034 clojure.core$comp$fn__4034@ebd3f80>
user> js/emit
CompilerException java.lang.RuntimeException: No such namespace: js, #compiling (NO_SOURCE_PATH:1)
user>
这并不是特别令人惊讶,js如何成为常规的clojure namesapce?但是如何使用这个(或任何其他)系统生成我可以传递给execute-script
的Clojurescript(javascript)代码?
答案 0 :(得分:4)
使用cljs.closure/build
功能:
(use '[cljs.closure :only [build]])
(build '(print "hello") {:optimizations :simple :pretty-print true})
closure.clj底部的评论中有更多示例。还有输出到文件的选项。