我想测试一些服务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测试文件中注入所有链式服务?
答案 0 :(得分:1)
理想情况下,单元测试代码时不应包含实际依赖项。相反,您应该提供模拟服务B并存根这些依赖项。
const BService = AService.injector.get(BService);
spyOn(BService, 'someFunc').and.returnValue(1);
在您的测试中,您可以监视对服务B的这些调用并返回您想要的任何值。
Draw.set()