Testing javascript with Play Framework 2.0 and JsTestDriver

Testing javascript with Play Framework 2.0 and JsTestDriverを適当翻訳でご紹介します。

元記事はこちら


qwallet.comでは、バックエンドにScala on Play2.0を使った広大なjavascriptアプリケーションを構築しています。

Scalaの開発にIntelliJ IDEAを使うようになってからは、JavaScriptでも同じように使っています。

これにより、IntelliJとJsTestDriverの統合による恩恵を受けています。

JavaScriptアプリでは、常に3つのブラウザを対象にテストをしています。

テストコンソールにはテスト結果と、ブラウザからフェッチされたコンソール出力を確認できます。

上の試験例では、FireFox, Chromeのテストは通っていますが、Safariでは失敗しています。 サンプルでは3つのテストケースがあり、拡張した1つは2つのテストメソッドを持っています。 もしエラーが発生した場合、スタックトレースがクリッカブルになり、IntelliJはエラーの行右側に飛びます。

テストはとても速いですが、この小さなサブセットのためにChromeでは6msかかっていますが、まだ改善の余地があります。

Play2.0の親切なところは、JavaScriptファイルの自動コンパイルです。 JsTestDriverのdevモードでは、ライブラリファイルとテストケースをブラウザに送り、アプリケーションファイルはPlay2.0アプリケーションによって送られます。 Playは、ファイルの変更を検知して自動でリコンパイルします。 テストを書くときに見逃しているかもしれないものをコンパイラがキャッチしてくれ、結果としてカバレッジが向上します。

CIモードでは、JavaScriptファイルは1度コンパイルされておりPlayを経由して送られる必要がない。 この方法はとても早く、Playがバックグラウンドで実行されている必要性を低減してくれます。

qwallet.comの継続的デプロイの運用では、アプリケーションの全ての部分をテストします。 JsTestDriverはクロージャーコンパイラーとバンドルされ、fast devモードユニットテストとテスティングストラテジーのコンポーネントとして提供されています。

ところで、もし興味があったら、jobs@qwalletにメールを送ってくれ。