Rails アプリの JavaScript のテストは、 Konacha 使うのをやめて、Mocha を直接使っている。
Mocha は HTML サポートしているんで、 TestRunner.html 作ってブラウザで表示すればテストが実行され、 お手軽だ。
ただ、複数のブラウザでテストする場合、ブラウザを起動してまわらないといけない。 アプリやテストのコードを修正したら、当然ブラウザを更新して以下略。 ちょっとメンドイ。
メンドイと思ったときがツールの入れどき。 最近いろんなブログで見かけたテストランナー、Testem を導入することに決めた。
Testem インストール
Testem は Node で動くので、npm でインストール。
npm install -g testem
設定ファイル作成
プロジェクトルートに testem.json を作成し、Testem の設定を記述した。
{ "framework": "mocha", "src_files": [ "vendor/assets/components/underscore/underscore.js", "vendor/assets/components/backbone/backbone.js", "vendor/assets/components/backbone_rails_sync/backbone_rails_sync.js", "vendor/assets/components/hogan/web/builds/2.0.0/hogan-2.0.0.min.js", "vendor/assets/components/chai/chai.js", "public/assets/template.js", "public/assets/application.js", "spec/javascripts/spec_helper.js", "public/assets/tests.js" ], "launch_in_dev": [ "Chrome" ] }
使うテスティングフレームワークは Mocha。 Mocha にはアサーションライブラリがついていないので、Chai を一緒に使っている。
src_files に指定したファイルは、Testem が自動生成する TestRunner.html に埋め込まれる。 Mocha は Testem が提供してくれるので、それ以外のライブラリやテストコードを記述する必要がある。
あと、launch_in_dev で、Chrome が自動で起動するように指定。
テスト実行
ターミナルで
testem
を実行すると、Web ブラウザが自動で起動し、テストが実行された。
ターミナルにもテスト結果が出力されていた。
コードを修正して保存すると、Testem がそれを検知してブラウザをリロードしてくれる。 テストを書くのが捗るな。