Angular 测试链依赖服务

Angular 测试链依赖服务,angular,angular2-testing,Angular,Angular2 Testing,我想测试一些服务AService,它有一些依赖项BService,它依赖于另一个服务e.x.CService。我们有链式依赖关系: A服务-->B服务-->C服务 服务构造函数: constructor( private bService: BService ) {} constructor( private cService: CService ) {} b服务构造函数: constructor( private bService: BService ) {} constr

我想测试一些服务AService,它有一些依赖项BService,它依赖于另一个服务e.x.CService。我们有链式依赖关系:

A服务-->B服务-->C服务

服务构造函数:

constructor(
  private bService: BService
) {}
constructor(
   private cService: CService
) {}
b服务构造函数:

constructor(
  private bService: BService
) {}
constructor(
   private cService: CService
) {}
如果我想在测试文件中使用test-AService,我应该这样写:

beforeAll(() => {
      injector = ReflectiveInjector.resolveAndCreate([
            AService,
            BService,
            CService,
        ]);

        service = injector.get(AService);
   });
如果我有太多相互链接的服务,我会得到太多的样板文件


有没有办法不在我的AService测试文件中注入所有链式服务?

理想情况下,单元测试代码时不应包含实际的依赖项。相反,您应该提供一个模拟serviceB并存根这些依赖项

description('AService',()=>{
以前(()=>{
injector=ReflectiveInjector.resolveAndCreate([
服务,
{provide:BService,useClass:MockBService}
]);
Aservice=喷油器.get(Aservice);
});
});
类MockBService{
//在此处输入要从服务调用的模拟函数
//这不依赖于服务C
}
在测试中,您可以监视对服务B的那些调用,并返回您想要的任何值

constbservice=AService.injector.get(BService);
spyOn(BService,'someFunc')。和.returnValue(1);