首页 > 解决方案 > 用 Angular 测试服务的理想方法是什么?

问题描述

我是角度测试的新手,我想为我的服务创建测试。

问题是我的服务(foo)在其构造函数中注入了另一个服务(bar)。

所以我应该创建一个模拟吧?模拟酒吧内的每个功能?如果是这样,我需要为我导入的每个包都这样做吗?把我自己的函数写成模拟?

标签: javascriptangularunit-testingangular-test

解决方案


您可以创建模拟/存根或使用 jasmine 间谍。

 export const jobServiceStub: Partial<JobService> = {
   getUser() {
     return {};
   }
 }

 describe('SampleService', () => {
  let service: SampleService;  

  beforeEach(() => {
    TestBed.configureTestingModule({
      providers: [        
        //replacing service with stub
        { provide: JobService, useValue: jobServiceStub },        
        UtilityService
      ]
    });
    service = TestBed.inject(SampleService);
  });
  

  it('should get all data', () => {
    const utilityService = TestBed.inject(UtilityService);    
    const spy = spyOn(utilityService, 'getValues').and.returnValue(2);    
  });
  
});

推荐阅读