2016-07-16 4 views
2

テスト中に非同期メソッドが呼び出されたことを確認する際に問題があります。ここに簡単な例があります。Angular2 rc4非同期テスト

​​

このテストは、約束が解決される前に解決が呼び出されたかどうかを最終的に確認するために失敗します。最終的な期待を取り除くと、その約束が自然に解決されることを確認する方法がありません。ここで失敗するはずの例はありません。

describe('async test',() => { 

    it('promise should resolve', async(() => { 

     let resolve = jasmine.createSpy('resolve').and.callFake((n) => { 
      expect(n).toEqual(1); 
     }); 

     let promise = new Promise(() => {}); 

     promise.then(resolve); 

    })); 

}); 

期待がテストに呼ばれることはありません決意であるためには、それは決意が呼ばれることはなかったではないはずなので、にもかかわらず渡します。 Angular2のasync()メソッドは、すべての非同期メソッドが完了するまで完了してはいけませんが、これは当てはまりません。しかし、Jasmine2のdone関数を使用することはできますが、これはinject()またはasync()を呼び出さなければならないテストとうまくやりとりできないようです。

+0

私は正確な問題を抱えています。非同期関数はすべての非同期タスクをまったく待たないようです。 – cgcladera

答えて

0

このdiscussionによれば、依存関係の読み込み順序です。

@choellerが示しているように、私はkarma.conf.jsを変更してzone-jsの前にsystem-polyfills.jsファイルがロードされ、ユニットが動作するようになりました。しかし、私はあなたの仕事を切り刻むことができませんでした。実際の単体テストではなく、概念の証明であるからでしょうか?

とにかく、これがあなたを助けてくれることを願っています。

関連する問題