0

私は約束事に関係するテストをセットアップしようとしています。ここに私のコード例は次のとおりです。私はこれを実行するとPromise.resolve()。ジャスミンテストでは動作しません

var promise; 

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

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

何らかの理由で、私はTIMEOUT

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

はなぜ約束はthenに与えられたコールバックを実行しません取得しますか?

乾杯

+0

約束通りの方法を使う必要はありません。 –

答えて

3

あなたは約束を解決するためにスコープ/ rootScope $ダイジェストメソッドを呼び出す必要があります。 だから:

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

あなたは実際に$ digestを呼び出すべきではありませんか? –

+0

$ rootScope。$ digest()があれば。おそらくtry/catchで囲まれています。でも、どちらも私のために働かない。 –

関連する問題