0

AngularFire2 を使用しています。テストの実行中にこの例外が発生しました。

これは私のテストがどのように見えるかです:

import {inject, TestBed} from '@angular/core/testing';
import {FIREBASE_PROVIDERS, defaultFirebase, AngularFire} from 'angularfire2';

describe('stock data service', () => {
    beforeAll(() => {
        const config = {
            apiKey: "123",
            authDomain: "123.firebaseapp.com",
            databaseURL: "https://123.firebaseio.com",
            storageBucket: "123.appspot.com",
        }; 
        TestBed.configureTestingModule({
            providers: [FIREBASE_PROVIDERS, defaultFirebase(config)]   
        });
    });

    it('should connect to Firebase', inject([AngularFire], (af : AngularFire) => {
        expect(af.database).not.toBe(null);
    }));

});

AngularFire は関数なので注入できないのではないでしょうか?

4

1 に答える 1

1

beforeAll「 」を「 」に置き換えるとbeforeEach、問題が解決します。

しかし、この変更が機能するようになった理由を誰かが説明できますか?

これが私が見つけたものです:

が呼び出された後、追加のプロバイダーがグローバル TestBed に追加されることがわかりconfigureTestingModuleます。ただし、 を使用すると、後で が呼び出されるとbeforeAll、これらの追加のプロバイダーが何らかの形で失わTestBed.execute(tokens: any[], fn: Function)れるため、依存性インジェクターによって検出されません。

于 2016-09-20T03:19:17.437 に答える