GroovyでJavaScriptソースをコールしてみる

2019-04-02Groovy, JavaScript

先週まで、「サーバサイトJavaScript」を使用したシステムに携わっていました。

その時に「JUnit」を使ってテストをできないかといろいろ調べていたときのメモです。

(最近ではTestNGなるものが話題のようですが、ろくすっぽJUnitも使っていないのに次のテストフレームワークを試す気もなく、まずはJUnitを使い倒すべく勉強中です。)

JavaScriptなので、jsUnit的なものを使用したら解決なのでしょうが、やはりそこはGroovy中毒としては引けません。

まずはGroovy(もちろんJavaでできる)でJavaScriptソースをコールしてみます。

import javax.script.*;
def engine = new ScriptEngineManager().getEngineByName("JavaScript");
engine.with {
    eval("var genzou = {age:29, sex:'man'};");
    def obj = eval("genzou")
    println obj.get("age", obj)
}

JavaScriptを文字列として引き渡し、実行します。
その後実行結果を取得します。意外と簡単ですね。

ただ、オブジェクトのプロパティ参照がやや面倒くさい。

Scriptable (Rhino) のgetメソッドを実行しているようなのですが、第二引数に毎回自分自身を引き渡してやる必要があるようです。( Pythonself キーワードをメソッドの第一引数に渡す、というルールに似ていますね。)

次回は、 metaClassgetAt メソッドを追加して、ちょっとだけ簡単にしてみたいと思います。

2019-04-02Groovy, JavaScript