JavaScriptをテスト
JavaScriptテスティングフレームワークの種類は2つ。
ブラウザベースのテスティングフレームワーク
WebブラウザにテストのフィクスチャとなるHTMLをロードし、そのテストフィクスチャファイルからテスト対象のファイル、ライブラリ、実行するテストをロードすることで、Webブラウザ上のテストランナーがテストを実行。
メリット
- 本来実行されるWebブラウザを利用するので、本番に近い環境でテストを実行できる
- テストランナーの実行状態やテストの実行結果をWebブラウザ上で分かりやすく表示できる
デメリット
- CIのように実装作業中に何度もテストを流す状況では、都度Webブラウザを立ち上げなければならないなど完全自動化に難あり
ヘッドレス型のテスティングフレームワーク
「ヘッドレス」は「ユーザーとの対話的なインターフェイスとなる部分がない」という意味で、クライアントサイドのJavaScriptの場合は、Webブラウザの画面を使わないということを意味する。Webブラウザ上でテストを実行する代わりに単体で動作するJavaScriptエンジンを利用し、フレームワークはWebブラウザをエミュレートすることでテストランナーがテストを実行できる。
メリット
- コマンドラインから実行できるのでCIに適用しやすい
デメリット
- テスト実行時に利用するJavaScriptエンジンが、実際の利用時のWebブラウザに組み込まれているエンジンと異なる場合、その実行結果が一致するかの保証ができない
- エミュレーションの結果が実際の利用環境と同等かどうかの保証はできない
ツール
- Phantomjs+Jasmine http://www.atmarkit.co.jp/ait/articles/1210/10/news012.html
- Phantomjs+QUnit http://www.atmarkit.co.jp/ait/articles/1211/29/news012.html
- JsTestDriver http://www.atmarkit.co.jp/ait/articles/1301/21/news017.html
- Capybara-webkit+Sinon.JS http://www.atmarkit.co.jp/ait/articles/1302/20/news032.html