如何为公共静态方法编写茉莉花业力测试用例?

我正在为茉莉花因果测试案例编写服务,这些方法本质上是公共静态的。我如何无法在spec.ts文件中访问它们或为它们编写测试用例。谁能告诉我如何?

这是我在app.service.ts中的方法

public static getModifiedDate(dateVal: any): string {
    if ('' === dateVal) {
      return null;
    }
    const year = dateVal.substring(
      dateVal.lastIndexOf('/') + 1,dateVal.length
    );
    const month = dateVal.substring(0,dateVal.indexOf('/'));
    const date = dateVal.substring(
      dateVal.indexOf('/') + 1,dateVal.lastIndexOf('/')
    );
    return year + '-' + month + '-' + date;
  }

在spec.ts文件中,我无法像我尝试的那样编写此功能的测试用例,

describe('AppService',() => {
  let service: AppService;
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [HttpClientTestingModule],providers: [RestClientService,AppService]
    });
    service = TestBed.get(AppService);
  }));

  it('getModifieddate should return date in the expected format',() => {
    const date = service.getModifiedDate('04/20/2017');
    expect(date).toEqual('2017-04-20');
  }); 
});

由于getModifiedDate是公共静态方法,因此显示错误。 解决此问题的正确方法是什么?

dqsj09021013 回答:如何为公共静态方法编写茉莉花业力测试用例?

您应该以静态方式调用静态方法:AppService.getModifiedDate。该测试可以简化如下:

describe('AppService',() => {
  it('getModifieddate should return date in the expected format',() => {
    const date = AppService.getModifiedDate('04/20/2017');
    expect(date).toEqual('2017-04-20');
  }); 
});
,

您可以尝试以下几项操作:

  • it('getModifieddate should return date in the expected format',() => {
        const date = (service as any).getModifiedDate('04/20/2017');
        expect(date).toEqual('2017-04-20');
      });
    
  • it('getModifieddate should return date in the expected format',() => {
        spyOn(service as any,'getModifiedDate').and.callFake(() => {return '2017-04-20'; });
        const date = (service as any).getModifiedDate('04/20/2017');
        expect(date).toEqual('2017-04-20');
      });
    
  • it('getModifieddate should return date in the expected format',() => {
        const date = AppService.getModifiedDate('04/20/2017');
        expect(date).toEqual('2017-04-20');
      });
    

希望这会有所帮助。让我知道您是否有任何疑问。

本文链接:https://www.f2er.com/3119246.html

大家都在问