AngularJSを使うES6で書かれたコードのユニットテストを動かす方法を調べた。テストのフレームワークとしてJasmine、テスト実行環境としてKarma、タスクランナーにgulpを使ってみた。
方法自体はAngularJSに限らず一般のJavaScriptのユニットテストとして使えるはず。
Karmaのインストール
$ npm install --save-dev karma |
Karmaのユニットテスト
Karmaを走らせるには設定ファイルが必要になる。 karma init で karma.conf.js が作られる。生成された karma.conf.js をいじって、以下のようにしてみた:
// karma.conf.js |
filesにテストで使うコードを指定- テストコードは
src/test/*.spec.jsに置く - 上のソースの場合、jQuery、AngularJS、ngMockを使用する
- テストコードは
- ES6のコードを処理できるようにするために、
preprocessorsにbrowserifyを指定して、transformに['babelify']を指定する browsersにはPhantomJSを指定
$ karma start karma.conf.js |
でユニットテストを走らせることができる。
gulpでユニットテストを走らせる
karmaをコマンドラインから直接呼び出してもいいのだが、gulpのタスクとして呼び出せるようにするとビルドと一緒に行えるようになって便利:
// gulpfile.js |
- 変更を監視してテストを走らせたい場合には
singleRunを削除するとよい(karma.conf.js内でfalseにしているので)