业力覆盖似乎没有报告测试涵盖的项目
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 任务添加到流程中。那些是在这个过程的后期出现的,覆盖率报告显示了 运行 的最后一个版本,这可能是缩小版本,因此报告不正确。
所以我们有业力覆盖设置和我认为有效的东西,但生成的报告似乎没有考虑所有单元测试。我们在控制器、服务等中得到了很多 "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 任务添加到流程中。那些是在这个过程的后期出现的,覆盖率报告显示了 运行 的最后一个版本,这可能是缩小版本,因此报告不正确。