http.MockBackend
でinjectAsync
を使用する際に問題があります。 auth.ngOnInit()
方法はHttp.get()
を呼び出しますが、このテストでMockBackend.connections.toPromise().then()
メソッドが呼び出されることはありません:Angular2テスト非同期Http.MockBackend.connectionsはお約束しません
it('should check if the user is authenticated',
injectAsync([Auth, MockBackend], (auth, backend) => {
let promise = backend.connections.toPromise().then(
(connection) => {
let link = document.createElement('a');
link.href = connection.request.url;
expect(link.pathname).toBe('/api/auth/user/');
});
auth.ngOnInit();
return promise;
}));
私はMockBackend.connections.next()
メソッドが呼び出されているデバッガで確認されました。しかし、テストを実行すると失敗しますError: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
私はここで何が欠けていますか?
クイックチェック - もしあなたが 'debugger'を削除するなら、同じ問題? – alecxe
@alecxeいいキャッチ、ありがとう!それなしでも同じ結果。 –
ありがとうございます、 'auth.ngOnInit()'の部分はどうでしょうか?コメントアウトするとタイムアウトになりますか? – alecxe