业力覆盖似乎没有报告测试涵盖的项目

karma-coverage doesn't appear to be reporting items covered by tests

所以我们有业力覆盖设置和我认为有效的东西,但生成的报告似乎没有考虑所有单元测试。我们在控制器、服务等中得到了很多 "statement not covered" 或 "function not covered",我们在测试中执行了代码行。

我们只是在实施这个(和单元测试),所以我确信我们遗漏了一些东西,所以任何帮助我们指出正确方向的帮助都将不胜感激。

这是一个片段,以防我们在测试部分做错了:

控制器

(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";”行例如,它没有被覆盖,方法也是如此。作为设置的测试真的不包括那些项目吗?如果是这样,能否提供有关我们如何错误测试的帮助?谢谢

终于找到问题了。我们正在使用 G运行t 来处理所有内容,并且我们已将 concat 和 minify 任务添加到流程中。那些是在这个过程的后期出现的,覆盖率报告显示了 运行 的最后一个版本,这可能是缩小版本,因此报告不正确。