1

したがって、カルマカバレッジの設定と機能していると思われるものがありますが、生成されたレポートはすべての単体テストを考慮していないようです. テスト内のコード行を実行したコントローラー、サービスなどで、多くの「ステートメントがカバーされていません」または「機能がカバーされていません」。

これ(および単体テスト)を実装しているだけなので、欠けているものがいくつかあると確信しているため、正しい方向に向けて助けていただければ幸いです。

テストピースで何か間違ったことをしている場合のスニペットを次に示します。

コントローラ

(function(){
 var simpleMod = angular.module('simpleMod', []);

 simpleMod.controller('simpleController', function($scope){
    $scope.test = "A";

    $scope.TestMethod = function()
    {
       $scope.test = "B";
    };
 });
})();

テスト

describe('Test Suite', function () {
 var scope;
 var simpleController;

 beforeEach(module('simpleMod'));

 beforeEach(inject(function($controller, $rootScope) {
    scope = $rootScope.$new();

    simpleController = $controller('simpleController', {
       $scope: scope
    });
 }));

 it('Test 001', function() {
    spyOn(scope, 'TestMethod').and.callThrough();

    expect(scope.test).toEqual('A');

    scope.TestMethod();

    expect(scope.TestMethod).toHaveBeenCalled();
    expect(scope.test).toEqual('B');
 });
});

テストは実行されて成功しますが、カバレッジ レポートを見ると、「$scope.test = "A";」という行が表示されています。たとえば、メソッドについても同様です。セットアップとしてのテストは本当にそれらの項目をカバーしていませんか? もしそうなら、私たちがどのように間違ったテストを行っているかについて助けを提供できますか? ありがとう。

4

1 に答える 1