$ timeout.flush()不起作用

时间:2017-05-23 11:16:07

标签: angularjs karma-jasmine

我尝试在$timeout之后测试更改,这是:

it('after timeout', function () {
        expect(scope.Vm.isLoaded).toBe(true);
        $timeout.flush(10);
        $timeout.flush(2000);
        $timeout.verifyNoPendingTasks();
        expect(scope.Vm.isLoaded).toBe(false);
      });

这不起作用 检查$timeout.verifyNoPendingTasks(); 我有错误:

  

错误:要延迟的任务要刷新(2):{id:0,时间:0},{id:1,时间:   2000}

之后我补充道:

$timeout.flush(10);

结果是:

  

错误:要延迟的任务要冲洗(1):{id:1,time:2000}

添加时:

$timeout.flush(10);
$timeout.flush(2000);

测试失败,看起来它不起作用,我错过了什么?有任何想法吗?

1 个答案:

答案 0 :(得分:0)

帮助您非常困难,因为一开始您没有显示要测试的代码。我们不知道为什么您的测试代码会有两个超时。

第二个是Angular JS在https://github.com/angular/angular.js/issues/14336

中描述了verifyNoPendingTasks()的问题

在您创建此问题后,它在6月27日的提交https://github.com/angular/angular.js/commit/6f7674a7d063d434205f75f5b861f167e8125999中得到解决。

所以,我相信,如果您更新AngularJS依赖项,则可以正确使用$ verifyNoPendingTasks方法。