没有AngularFire的提供者

时间:2016-09-15 21:16:06

标签: angular jasmine angularfire2 angular2-testing

我正在使用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不能注入,因为它是一个函数?

1 个答案:

答案 0 :(得分:1)

替换' beforeAll'与' beforeEach'解决了这个问题。

但是,有人可以解释为什么这种改变使其有效吗?

这是我发现的:

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