我有一个试图测试的功能:
vm.clearArray = function(){
for (var id=0; id<vm.copyArray.length;id++){
vm.styleIcon(vm.copyArray[id],'black')
}
vm.copyObjArray = [];
vm.copyArray = [];
}
Run Code Online (Sandbox Code Playgroud)
我试着测试它像:
it('should have cleared copyArray on function call', function(){
var ctrl = $componentController('copy', null);
spyOn(ctrl, 'clearArray').and.callThrough();
spyOn(ctrl, 'styleIcon').and.callThrough();
ctrl.copyArray = [123];
ctrl.clearArray();
expect(ctrl.clearArray).toHaveBeenCalled();
// expect(ctrl.styleIcon).toHaveBeenCalled();
expect(ctrl.copyObjArray).toEqual([]);
expect(ctrl.copyArray).toEqual([]);
});
Run Code Online (Sandbox Code Playgroud)
如果我取消注释上述内容,我会收到错误,并且我的覆盖率报告中从未涵盖过vm.styleIcon调用.通过将copyArray设置为包含数组中的值,我认为for循环将在运行测试时触发.情况似乎并非如此.
谢谢.