使用TestBed测试具有依赖关系的Angular服务

时间:2022-07-25
本文章向大家介绍使用TestBed测试具有依赖关系的Angular服务,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

具有依赖关系的Service源代码:

import { Injectable } from '@angular/core';

@Injectable()
export class MasterService {
  constructor(private valueService: ValueService) { }
  getValue() { return this.valueService.getValue(); }
}

export class ValueService {
  getValue() { return 'Jerry'; }
}

单元测试代码:

describe('MasterService with Angular TestBed', () => {
    let service: ValueService;
    let masterService: MasterService;

    beforeEach(() => {
        TestBed.configureTestingModule({ providers: [ValueService] });
    });

    it('should use ValueService', () => {
        service = TestBed.inject(ValueService);
        masterService = new MasterService(service);
        expect(masterService.getValue()).toBe('Jerry');
      });
});

高亮部分的代码,其实就类似于我们正式代码里通过@NgModule进行的module配置:

最后的测试结果: