AngularのコードをCoffeeScript + power-assert + Karmaでテストしてみた
前回のエントリで、CoffeeScript + power-assert + (karma)のことを書いたのだけど、一番やりたかったAngularJSのプロジェクトでpower-assertが使えるかどうか確かめてみました。
ポイントは2点だけです。
ポイント①:テスト対象はClassにする
テストコードからテスト対象を呼べるようにするために、テストするControllerやDireciveはClass(正確には違うけど)にする必要があります。
class TryPowerAssertController constructor: (@scope) -> @scope.getFizzBuzzStr = @getFizzBuzzStr getFizzBuzzStr: (i) -> if i % 15 == 0 'FizzBuzz' else if i % 5 == 0 'Buzz' else if i % 3 == 0 'Fizz' else i.toString() TryPowerAssertController.$inject = ['$scope'] angular.module('powerAssertApp', []).controller('TryPowerAssertController', TryPowerAssertController)
ポイント②:karma.confにangularをテスト時に読み込むように設定する
テスト実行時にangularがありません
って怒られるので、karma実行時にangularを読み込むようにします。
他のライブラリを使ってる場合はそれも読み込むようにします。
module.exports = (config) -> ... files: [ 'node_modules/power-assert/build/power-assert.js' 'src/bower_components/angular/angular.min.js' 'src/scripts/**/*.coffee' 'test/**/*_test.coffee' ], ...
一応これで動きました。
これならテスト書くために特別なメソッドやおまじないとか覚える必要がないのでテスト書くハードルがかなり下がります。AngularJS Tutorial のテストコードなにやってんのかよく分からなかったので。。
でもDIするものが増えるとテスト書くのめんどくさくなりそうだなという気もしてます。。
- 作者: Brad Green,Shyam Seshadri,牧野聡
- 出版社/メーカー: オライリージャパン
- 発売日: 2014/04/18
- メディア: 大型本
- この商品を含むブログ (2件) を見る