なぜ再三GroovyからJavaScriptを呼ぼうとしたか

なぜ何度もJavaScriptを呼ぼうと頑張ったかというと、以下のjavascriptテストフレームワークを使用したかったから。

Maven - JsTester

テストケースを書くために、Groovyに特化したクラスも用意されている。

Maven - Frequently Asked Questions

掲載されていたものを抜粋し、若干バグっている部分を修正。(このサイトのソース、あちこちにタイプミス、変数定義漏れなどがあり、若干バグっているがw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22

import net.sf.jstester.ext.GroovyJsTestCase

class GroovyJsTesCaseTest extends GroovyJsTestCase {
   void testScript(){
     def groovyVar = "10";

     def script = """
        var counter = 0;
        function count(){
           counter++;
        }

        for( i = 0; i < $groovyVar; i++ ){
           count();
        }
     """;
     
     eval( script );
     assertExpressionEquals( "$groovyVar", "counter" );
   }
}

結構おもしろいなぁと思った。最後の

1
2

     assertExpressionEquals( "$groovyVar", "counter" );

の部分は、

1
2

     assertExpressionEquals( groovyVar, "counter" );

でも比較可能。(というか、なぜサンプルで文字列にしてあるのか不明)第二引数がテストケース内でevalを実行した結果定義された変数、関数を表す。