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
にしているので)