0
为什么在测试用例中要执行$scope.$apply()
才能完成异步处理。
说,我有一个服务
angular.service("a",function($q){
return {
getValue: function(){
return $q.resolve(someObj)
}
}
})
而且在我的测试
it("test this",function(done){
a.getValue()
.then(function(data){
expect(data).toEqual(data)
done();
})
$scope.$apply();
})
感谢您的回答@scott 您能否详细说明为什么承诺要求在我没有更改范围上的任何内容时运行摘要循环。 –
从这个[post](http://blog.xebia.com/testing-promises-in-angularjs/):当一个承诺解决了,它的回调不立即被调用。相反,Angular将promise.resolve回调放在evalAsync队列中。他们在那里等待队列将被处理。只有这样才会调用回调。它是处理队列的digest()方法。 – ScottL