Я ударил странную вещь, пытаясь проверить услугу, возвращающую обычные обещания в $ q. Никакое обещание, которое я пытаюсь в любом тесте, на самом деле никогда не разрешалось/отклонялось (более конкретно обработчики из then
не вызываются, код внутри обещаний работает просто отлично). Я даже пытался заставить дайджест на корневой области, как некоторые другие ответы на SO предложил, без всякой удачи.Замороженное обещание в единичном тесте
Вот небольшой самодостаточным пример:
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()
);
});
});
Что я должен сделать, чтобы получить обещание работать, как ожидалось?
$ q обещания синхронны и не требуют вызова 'done'. Просто '$ rootScope. $ Digest()' * после * была создана цепочка обещаний. Любые более новые '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' – estus
Спасибо, ты в порядке (эстус, Радек Вирослак и доге). Я понятия не имел, что обещания $ q являются синхронными и требуют дайджеста для работы. – monnef