0
이 테스트 코드 내의 체인이 해결되지 않음 ... 레벨 1과 레벨 2를 해결합니다. 이 야해 작업 ... :-(플러시 타임 아웃 후 약속을 반환하는 연결 기능이 해결되지 않음
... 그리고 내가이 요청 내부에 너무 많은 코드를 가지고처럼 해달라고 유래 이유
it('Three level promise', inject(function ($q, $timeout, $rootScope) {
var plusOne = function(value) {
var deferred = $q.defer();
$timeout(function() {
deferred.resolve(value+1);
}, 10);
return deferred.promise;
}
var promiseCall = function() {
return plusOne(1).then(function (data){
console.error('call1 resolved', data);
return plusOne(data).then(function (data2){
console.error('call2 resolved', data2);
return plusOne(data2).then(function (data3){
console.error('call3 resolved', data3);
return data3;
});
});
});
}
var result;
promiseCall().then(function (data) {
result = data;
});
$timeout.flush(); // Force timeout to be flushed.
expect(result).toBe(3);
}));
나는 볼 수 없습니다
그래서'call3 resolved' 로그 나 테스트가 실패하지 않습니까? – dfsq
왜'console.log' 대신 성공 핸들러에서'console.error'를 사용하고 있습니까? – Bergi
'result'가'undefined'라고 기대하십시오. 'promiseCall(). then (function() {...})'안에'expect()'를 이동시키고'data'가'NaN' ('undefined + 1')이 될 것으로 기대하십시오. 그런 다음 각각의 함수에서'data'와'data2'를 리턴하고'data'는'4' (1 + 1 + 1 + 1)이 될 것으로 기대합니다. –