Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS单元测试中嵌套的$rootScope.$digest()_Angularjs_Unit Testing_Jasmine - Fatal编程技术网

AngularJS单元测试中嵌套的$rootScope.$digest()

AngularJS单元测试中嵌套的$rootScope.$digest(),angularjs,unit-testing,jasmine,Angularjs,Unit Testing,Jasmine,在调用另一个方法之前,我有一个需要解决的承诺。另一种方法不返回承诺,但它使用承诺。我需要检查这个最终承诺是否得到解决,数据是否设置正确。为此,我需要调用根$scope.$digest(),但如果在承诺内调用它,则承诺外已经有一个$rootScope.$digest()循环在进行中,我会得到一个错误。代码: //spec file var promise = doSomething(); promise.then(function(data) { expect(data).toE

在调用另一个方法之前,我有一个需要解决的承诺。另一种方法不返回承诺,但它使用承诺。我需要检查这个最终承诺是否得到解决,数据是否设置正确。为此,我需要调用根$scope.$digest(),但如果在承诺内调用它,则承诺外已经有一个$rootScope.$digest()循环在进行中,我会得到一个错误。代码:

 //spec file
 var promise = doSomething();
 promise.then(function(data) {
      expect(data).toEqual(stub);
      callSomeOtherMethod();//this method has a promise that needs to be resolved
      $rootScope.$digest();//cannot do this
 });
 $rootScope.$digest();//if I remove this, promise is not resolved
有没有办法让它发挥作用

编辑:


我可以在promise之外添加第二个$rootScope.$digest(),这将允许对someOtherMethod()promise进行求值,但它仍然会抛出同步性,因为代码中的任何预期都将根据预承诺值进行检查

您是否尝试过在promise回调之外调用
$rootScope.$digest()
两次?不幸的是,这似乎不起作用。无错误,但未评估最终承诺。编辑:它确实可以工作,但您需要删除任何done()jasmine异步调用。谢谢您是否尝试过在promise回调之外调用
$rootScope.$digest()
两次?不幸的是,这似乎不起作用。无错误,但未评估最终承诺。编辑:它确实可以工作,但您需要删除任何done()jasmine异步调用。谢谢