如何测试我所有的服务都注入组件

时间:2019-06-22 04:13:25

标签: angular jasmine

如何测试我所有的服务已注入组件

class TestComponent {
    constructor(testService: TestService) {}
}

如果有人从组件构造函数中删除该服务,则我的测试用例应该失败。

1 个答案:

答案 0 :(得分:2)

我们可以将TestBed设置为虚拟的Angular模块,并可以像配置一组提供程序那样对其进行配置,

TestBed.configureTestingModule({
  providers: [TestService]
});

然后使用其内部注入器和TestBed将令牌解析为依赖项,

testBedService = TestBed.get(TestService);

然后您的测试用例是,

it('Service injected via inject(...) and TestBed.get(...) should be the same instance',
    inject([TestService], (injectService: TestService) => {
      expect(injectService).toBe(testBedService);
    })
);

引用https://codecraft.tv/courses/angular/unit-testing/dependency-injection/