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' 即可解决问题。

但是有人可以解释为什么这种变化使它起作用吗?

这是我发现的:

我可以看到额外的提供者在configureTestingModule被调用后被添加到全局 TestBed 中。但是,使用 时beforeAll,这些额外的提供程序在TestBed.execute(tokens: any[], fn: Function)稍后调用时会以某种方式丢失,因此无法被依赖注入器找到。

于 2016-09-20T03:19:17.437 回答