测试链依赖服务

时间:2017-04-03 09:30:54

标签: angular angular2-testing

我想测试一些服务AService,它有一些依赖BService,它依赖于另一个服务e.x.内部CService。我们有像依赖的链:

AService - > BService - >内部CService

AService构造函数:

constructor(
  private bService: BService
) {}

BService构造函数:

constructor(
   private cService: CService
) {}

如果我想在我的测试文件中测试AService,我应该写这样的东西:

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

        service = injector.get(AService);
   });

如果我有太多的服务,彼此链接,我会得到太多样板。

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

1 个答案:

答案 0 :(得分:1)

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

   const BService = AService.injector.get(BService);
   spyOn(BService, 'someFunc').and.returnValue(1);

在您的测试中,您可以监视对服务B的这些调用并返回您想要的任何值。

Draw.set()