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