비동기 프로세스가 완료 될 때 테스트 케이스에 $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는 evalAsync 큐에 promise.resolve 콜백을 넣습니다. 대기열이 처리 될 때까지 대기합니다. 그때 만 콜백이 호출됩니다. 대기열을 처리하는 것은 digest() 메소드입니다. – ScottL