所以我们有业力覆盖设置以及我认为工作的内容,但生成的报告似乎并没有考虑所有的单元测试。我们在控制器,服务等中获得了很多“未涵盖的声明”或“未涵盖的功能”,我们在测试中运用了代码行。
我们正在实施这个(以及单元测试),所以我确信有一些我们缺少的东西,所以任何帮助指出我们正确的方向都将受到赞赏。
这是一个片段,因为我们在测试中做错了什么:
控制器
(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“;”例如,它没有被覆盖,对于该方法也是如此。测试作为设置真的不包括那些项目吗?如果是这样,可以帮助我们提供不正确的测试方法吗?感谢。
答案 0 :(得分:1)