angular - 如何测试我的所有服务都注入(inject)到组件中

标签 angular jasmine

如何测试我的所有服务都注入(inject)到组件中

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

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

最佳答案

我们可以将 TestBed 制作为虚拟 Angular 模块,并且可以将其配置为包含一组提供程序的模块,

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

然后使用其内部注入(inject)器和TestBed将 token 解析为依赖项,

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/

关于angular - 如何测试我的所有服务都注入(inject)到组件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56712529/

相关文章:

angular - 最佳Angular 4记录器

javascript - 如何在 AngularJS 中对独立作用域指令进行单元测试

unit-testing - 使用 Resharper 7 测试运行程序进行 Jasmine 测试的堆栈跟踪

javascript - 检查传递特定参数时是否调用函数

angular - 具有多个输入的 FormControlName 的 ControlValueAccessor

javascript - 在 Angular 2 Google map 上移动 map 控件

javascript - 我们使用 TestNG 在 Protractor 和 jasmine 中进行基于组的测试

javascript - 如何在 karma + jasmine 中测试我的 Angular 作用域函数?

angular - 对 Observable zip 订阅执行操作

html - Angular 8中根据是否有overflow-x(水平滚动)显示和隐藏元素