Ich habe eine seltsame Sache getroffen, wenn ich versuche, einen Dienst zu testen, der gewöhnliches $ q Versprechen zurückbringt. Keine Verheißung, die ich in irgendeinem Test versuche, wird wirklich jemals aufgelöst/zurückgewiesen (spezifischhandler von then
werden nicht genannt, Code innerhalb des Versprechens läuft gerade gut). Ich habe sogar versucht, Digest auf einem Root-Scope zu erzwingen, wie einige andere Antworten auf SO nahelegten, ohne Glück.Gefrorenes Versprechen in einem Komponententest
Hier ist eine kleine in sich geschlossene Beispiel:
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()
);
});
});
Was muss ich das Versprechen wie erwartet zu tun haben, zu bekommen?
$ q Versprechen sind synchron und müssen nicht 'done' aufgerufen werden. Nur '$ rootScope. $ Digest()' * nach * der Versprechungskette wurde eingerichtet. Bei neueren '' '' '' '' '' '' '' '' wird ein weiterer Digest ausgelöst. – estus
Danke, es geht dir gut (estus, Radek Wyroslak und doge1ord). Ich hatte keine Ahnung, dass $ q Versprechen synchron sind und verdauen, um zu arbeiten. – monnef