일반적인 $ q 약속을 반환하는 서비스를 테스트 할 때 이상한 점이 있습니다. 어떤 테스트에서 시도해도 약속이 실제로 해결/거부되지는 않습니다. (더 구체적으로는 then
의 핸들러가 호출되지 않습니다. 약속 안의 코드는 정상적으로 실행됩니다.) 나는 심지어 루트 범위에서 다이제스트를 강제 실행하려고 시도했다. 여기 단위 테스트에서 약속 안 함
describe('promise', function(){
jasmine.DEFAULT_TIMEOUT_INTERVAL = 500;
let q;
beforeEach(inject(function($q){
q = $q;
}));
it('finishes', function(done){
expect(q).toBeDefined();
const promise = q.resolve();
console.log(promise);
promise.then(
() => done(),
() => done.fail()
);
});
});
내가 예상대로 약속 일을하려면 어떻게해야합니까?
약속은 동기식이며 '완료'를 호출 할 필요가 없습니다. promise chain이 성립 된 후'$ rootScope. $ digest()'*. 더 새로운'then'은 다른 다이제스트가 트리거 될 것을 요구할 것입니다. – estus
감사합니다. 괜찮습니다 (estus, Radek Wyroslak and doge1ord). 나는 $ q 약속이 동기이고 일을하기 위해서 다이제스트를 요구한다는 것을 몰랐다. – monnef