所以我们有业力覆盖设置和我认为正在工作的东西,但生成的报告似乎并没有考虑到所有的单元测试。我们在控制器、服务等中得到了很多“未涵盖的语句”或“未涵盖的功能”,我们在测试中执行了代码行。
我们只是在实现这个(和单元测试),所以我确信我们缺少一些东西,所以任何帮助我们指向正确方向的帮助将不胜感激。
这是一个片段,以防我们在测试中做错了什么:
控制器
(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";" 这一行 例如,它没有被覆盖,方法相同。作为设置的测试是否真的不涵盖这些项目?如果是这样,是否可以提供有关我们如何不正确地进行测试的帮助?谢谢。