Karma test failing : TypeError: this.cardManagementService.getLabelList(...).replace is not a function

Karma test failing : TypeError: this.cardManagementService.getLabelList(...).replace is not a function

我收到 Karma 错误:

TypeError: this.cardManagementService.getLabelList(...).replace is not a function

请检查我在 TS 和 Spec 文件中的代码。我想我在为 CardManagementService.

编写 usevalue 时犯了一些错误

在 TS 文件中我有以下代码:

 setCardManagementLabels(): void {
        this.cardManagementLabels.cardNumber = this.cardManagementService.getLabelList('PROFILE.CARDMGMTTAB.CARDNUM');
    
 .---Some code here --- 
    this.cardManagementService.getLabelList('PROFILE.CARDMGMTTAB.SUSPENDMESSAGENOCOVERAGE')
            .replace('{suspended}', 'suspended').replace('{suspended}', 'suspended')....................}}

对于规范文件,我有这个:

providers: [ ........{provide: CardManagementService, useValue: {getLabelList: () => of([]), getEventV: () => of([])} },......]

    fit('should test setCardManagementLabels method for suspend and no coverage reason', () => {
          component.cardStatus = 'Suspended';
          component.debitCardSuspendClosedReason = 'NO_COVERAGE';
          component.setCardManagementLabels();
         });

如果您在测试的 providers 处使用 useValue,您需要提供一个模拟实例,该实例具有涵盖代码中的方法。由于 of([]) 在测试中由 getLabelList() 返回,因此没有任何名为 replace.

的方法

我假设 this.cardManagementService.getLabelList() returns 是原始代码中的一个字符串,所以在你的情况下 useValue: {getLabelList: () => "a string mocked string" 可以作为一个很好的起点。