karma-coverage似乎不是报告测试所涵盖的项目

时间:2016-01-08 18:00:08

标签: karma-coverage

所以我们有业力覆盖设置以及我认为工作的内容,但生成的报告似乎并没有考虑所有的单元测试。我们在控制器,服务等中获得了很多“未涵盖的声明”或“未涵盖的功能”,我们​​在测试中运用了代码行。

我们正在实施这个(以及单元测试),所以我确信有一些我们缺少的东西,所以任何帮助指出我们正确的方向都将受到赞赏。

这是一个片段,因为我们在测试中做错了什么:

控制器

(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“;”例如,它没有被覆盖,对于该方法也是如此。测试作为设置真的不包括那些项目吗?如果是这样,可以帮助我们提供不正确的测试方法吗?感谢。

1 个答案:

答案 0 :(得分:1)

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

相关问题