我正在使用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不能注入,因为它是一个函数?
答案 0 :(得分:1)
替换' beforeAll
'与' beforeEach
'解决了这个问题。
但是,有人可以解释为什么这种改变使其有效吗?
这是我发现的:
我可以看到,在调用configureTestingModule
之后,额外的提供程序会被添加到全局TestBed中。但是,对于beforeAll
,这些额外的提供程序在以后调用TestBed.execute(tokens: any[], fn: Function)
时会以某种方式丢失,因此依赖注入器无法找到它们。