【问题标题】:How to mock a service in Angular unit testing?如何在 Angular 单元测试中模拟服务?
【发布时间】:2021-09-18 19:13:08
【问题描述】:

我有以下承诺的服务订阅

getTaskData = async() {
line 1   let response = this.getTaskSV.getTaskData().toPromise();
line 2   this.loading = false;
}

我尝试如下,

   it('should load getTaskData', async () => {
     let getTaskSV= TestBed.inject(getTaskSV);
     spyOn(getTaskSV, 'getTaskData').and.returnValue(of([{name: 'test1'}, {name: 'test2'}]));
     component.getTaskData();
     fixture.detectChanges()
  });

当我运行上面的测试用例时,我看到第 1 行和第 2 行没有被覆盖。我实际上是测试用例的新手。任何人都可以帮助我如何模拟这项服务。提前致谢。

【问题讨论】:

    标签: javascript angular jasmine karma-jasmine angular-unit-test


    【解决方案1】:

    由于它是一个服务(一个外部依赖项),并且每次调用它时都会返回一个值来模拟它,当然它不会被覆盖,这很好。

    要覆盖这些行,请为 getTaskSV 服务编写单独的单元测试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-19
      • 2020-03-17
      • 1970-01-01
      • 1970-01-01
      • 2016-10-28
      • 1970-01-01
      相关资源
      最近更新 更多