0

Ich versuche, einen Test einzurichten, der Versprechen beinhaltet. Hier ist mein Beispielcode:Promise.resolve(). Dann funktioniert nicht im Jasmin-Test

var promise; 

beforeEach(inject(function ($q) { 
    promise = $q.resolve(); 
})); 

it('should resolve', function (done) { 
    promise.then(function() { 
     expect(true).toBeTruthy(); 
     done(); 
    }); 
}); 

Aus irgendeinem Grund, wenn ich das laufen, bekomme ich ein Timeout

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL. 

Warum nicht das Versprechen, den Rückruf zu then gegeben ausführen?

Prost

+0

Es ist nicht notwendig, done-Methode mit Versprechungen zu verwenden. –

Antwort

3

Sie benötigen Versprechen Umfang/rootScope $ Digest-Methode aufrufen zu lösen. So sollte es sein:

var result = false; 
promise.then(function() { result = true;}); 
$rootScope.$digest(); 
expect(result).toBeTruthy(); 
+2

sollten Sie eigentlich $ Digest nicht aufrufen? –

+0

Wenn etwas $ rootScope. $ Digest(). Wahrscheinlich umgeben von Versuch/Fang. Funktioniert aber auch nicht für mich. –

Verwandte Themen