Angular.js + Jasmine を使用してイスタンブール コード カバレッジ ツールを実行する際に問題が発生しました。私は Coffeescript でコーディングしていますが、Instanbul ではまだサポートされていないため、保存のたびにソースが JS に変換されます。
基本的に、ここではテストとテスト済みコードの関係はわかりません。単体テストがまったくないファイルでも 66% のカバレッジが得られるためです。これはまったく意味がありません。
タイトルで述べたように、テスト ランナーとして Karma を使用していますが、コマンド ラインでも同じ結果が得られます。
Angular.js コントローラーの例 (コンパイル済みの .coffee):
'use strict';
angular.module('app.controllers').controller('HelpIndexCtrl', [
'$scope', function($scope) {
return $scope.foo = 'bar';
}
]);
そして単体テスト:
'use strict'
describe "controllers", ->
beforeEach angular.mock.module "app.controllers"
scope = rootScope = {}
describe "HelpIndexCtrl", -> inject ($controller)->
ctrl = $controller 'HelpIndexCtrl', $scope:scope
it 'should have working scope', ->
expect(scope.foo).toBe 'bar'