각도 약속을 사용하여 몇 가지 재스민 테스트를하고 타이밍 관련 질문이 있습니다. 대답은 Unit-test promise-based code in Angular이지만이 작동 방식에 대한 설명이 필요합니다. then
메서드는 항상 비동기 방식으로 처리되므로 다음 테스트가 어떻게 통과되는지 보장됩니다. expect
이 실행중인 then
블록보다 먼저 실행되고 값이 할당되기 전에 expect가 실행될 위험이 없습니까? 또는 ... 다이제스트주기는 예상이 실행되기 전에 값이 할당되도록 보장합니다. 즉, 다이제스트주기는 코드가 진행되도록 허용되기 전에 약속이 모두 해결된다는 것을 보장하는 차단 호출처럼 효과적으로 작동합니다.약속을 사용하여 재스민 비동기 테스트
function someService(){
var deferred = $q.defer();
deferred.resolve(myObj);
return deferred.promise;
}
it ('testing promise', function() {
var res;
var res2;
someService().then(function(obj){
res = "test";
});
someService().then(function(obj){
res2 = "test2";
});
$rootScope.$apply();
expect(res).toBe('test');
expect(res2).toBe('test2');
});
좋은 답변입니다. 감사! – user4131376