とりあえず、2種類のテストがあり、どちらも十分なサポートがされている。

基本的にangular-seedというのを元に作ればいいんだけど、e2e (end to end) テストについては protractor というのを使うのが新しいようなので、今からはじめるならそちらを使ったほうが良い。

karma での unit テスト

node で完結する、ロジックの単体テスト。主に controller とか filter をテストする。controller で DOM を直でいじっていると実行できない。

サーバサイドとかとの通信とかは全てモックにしなければならない。Angular の DI の仕組みで、モックオブジェクトを外部から注入して単体テストを完結させる。

いろいろ面倒くさいけど、これを書くようにすることで controller / directive の使いわけとかを意識せざるを得なくなるので良い気がする。

protractor による end to end テスト

selenium を使った結合テスト。

protractor は Angular JS 用の e2e テストライブラリ。簡単に selenium-standalone をセットアップするところから、テスト用のユーティリティまでのセット。ドキュメント の通りにやれば OS X では全く苦もなく selenium 環境を作りテストを開始できる。

どこが「Angular JS用」なのかというと、ページロードとか、イベント発火とかで、いちいち自分で wait() を書く必要がなく、Angular 準拠の部分は自動で処理待ちをするので、かなり楽をできる。

karma か protractor か

  • karma のテストは早い
  • protractor (selenium) は遅い

ので、パターンを網羅したロジックは書きたいなら karma で完結するように書いたほうがいい。

  1. トップ
  2. angularjs
  3. AngularJS のテスト
  1. トップ
  2. tech
  3. AngularJS のテスト
▲ この日のエントリ