clj-webdriver を使用して、Clojurescript Web アプリで Selenium ベースのテストを行っています。ときどき、テストの実行中にアプリ自体をいじりたいことがあります。clj-webdriver には(execute-script js args)
、Javascript コードの文字列を受け取り、現在のテスト用ブラウザーで実行するという名前のものが含まれていることがわかります。私はこれをテストしましたが、うまくいくようです。ただし、 clojurescriptコードを渡したいと思いexecute-script
ます。Clojure フォームを Clojurescript コードにコンパイルするものが必要です。
次のような質問があります。クラッチから js/emit 関数を使用するように指示されています。クラッチを検索したところ、cljs-views.clj の(view) でのみ言及されていることがわかりました。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
でしょうか?