Unit testing Angular 2-如何在单元测试中访问服务依赖项

Unit testing Angular 2-如何在单元测试中访问服务依赖项,unit-testing,angular,angular2-services,Unit Testing,Angular,Angular2 Services,我有以下角度服务,这取决于AngularFire: @Injectable() 导出类FirebaseService{ 构造函数(私有af:AngularFire){} //这里有更多代码 } 我正在使用以下设置对此服务进行单元测试: TestBed.configureTestingModule({ 导入:[AngularFireModule.initializeApp(MY_FIREBASE_CONFIG)], 提供商:[FirebaseService] }); const firebase

我有以下角度服务,这取决于
AngularFire

@Injectable()
导出类FirebaseService{
构造函数(私有af:AngularFire){}
//这里有更多代码
}
我正在使用以下设置对此服务进行单元测试:

TestBed.configureTestingModule({
导入:[AngularFireModule.initializeApp(MY_FIREBASE_CONFIG)],
提供商:[FirebaseService]
});
const firebaseService=TestBed.get(firebaseService);
然后,我可以对服务的方法进行断言,例如:

//这很管用
expect(firebaseService.callFoo()).toEqual('foo');
我的问题是如何获得注入到
firebaservice
构造函数中的
AngularFire
实例?(
TestBed.get(AngularFire)
不工作;另外,我没有组件,因此无法使用组件的注入器)


站点说明:我知道我应该模拟后端进行单元测试,但这不是问题的重点。

不确定为什么
TestBed.get(FirebaseService)
不起作用。那里发生了什么?那么,
TestBed.get(firebaservice)['af']
会工作吗?是的,通常这不会是一个问题,因为在单元测试中,除了被测试的单元之外,所有单元都应该被模拟。
TestBed.get(FirebaseService)
可以工作,而
TestBed.get(AngularFire)
不能。我怀疑是因为
AngularFire
未明确列在测试床的提供程序中(因为它是由AngularFireModule提供的)。但您的评论让我意识到,如果我使用
构造函数注入
AngularFire
(公共af:AngularFire)
(vs
私有)
它应该可以作为服务属性访问。谢谢