10

我正在使用 clj-webdriver 在 Clojurescript Web 应用程序上进行一些基于 Selenium 的测试。有时,应用程序本身有一些东西我希望能够在测试运行时摆弄。我看到 clj-webdriver 有一个叫做的东西(execute-script js args),它接受一串 Javascript 代码并在当前的测试浏览器上运行它。我已经对此进行了测试,它似乎有效。我想将 clojurescript 代码传递给execute-script。我需要将我的 Clojure 表单编译成 Clojurescript 代码的东西。

我看到以下与此相关的问题。它说要使用离合器中的 js/emit 功能。我搜索了离合器,发现它只在cljs-views.clj的(视图)中提到我在 repl 中尝试了以下操作:

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 命名空间中?但是我如何使用这个(或任何其他)系统来生成我可以传递给的 Clojurescript(javascript)代码execute-script

4

1 回答 1

4

使用cljs.closure/build功能:

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

在closure.clj底部的评论中有更多示例。也有输出到文件的选项。

于 2013-01-15T00:04:33.047 回答