$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();
})
Answer @scott なぜ私はスコープ上で何も変更していないときにダイジェストサイクルを実行する必要があると約束できますか? –
この[post](http://blog.xebia.com/testing-promises-in-angularjs/)から:約束が解決されると、そのコールバックは直ちに呼び出されません。代わりに、Angularはpromise.resolveコールバックをevalAsyncキューに配置します。キューは処理されるまで待機します。それだけでコールバックが呼び出されます。キューを処理するのはdigest()メソッドです。 – ScottL