我使用的是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不能被注入是因为它是一个函数?
发布于 2016-09-20 11:19:17
将“beforeAll”替换为“beforeEach”可解决此问题。
但是,有人能解释一下为什么这个改变能让它工作吗?
这是我发现的:
我可以看到在调用configureTestingModule之后,额外的提供程序被添加到全局TestBed中。然而,对于beforeAll,这些额外的提供程序在稍后调用TestBed.execute(tokens: any[], fn: Function)时不知何故丢失了,因此无法被依赖项注入器找到。
https://stackoverflow.com/questions/39520496
复制相似问题