小编Ale*_*lex的帖子

for循环中的函数未被测试

我有一个试图测试的功能:

  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循环将在运行测试时触发.情况似乎并非如此.

谢谢.

javascript unit-testing karma-jasmine

11
推荐指数
1
解决办法
351
查看次数

标签 统计

javascript ×1

karma-jasmine ×1

unit-testing ×1