Angular、Transloco、Jest 单元测试警告

Angular, Transloco, Jest Unit Testing Warning

提问人:Maksat Madeniyetov 提问时间:9/15/2023 更新时间:9/15/2023 访问量:233

问:

我有一个 Angular 项目。

inputValidatorsParamMap: Map<string, ValidationParams> = new Map([
  [
    'noMoreThan100Symbols',
    {
      regex: /^.{0,100}$/,
      message: this.translocoService.translate('MAIN_LAYOUT.MAX_CHARACTER_COUNT', {
        count: 100,
      }),
    } as ValidationParams,
  ],
]);

正如你在这里看到的,我动态地设置了计数。

代码工作正常。我得到了预期的输出。

但是当我运行时,有一条警告消息npx jest

警告消息: 缺少“enUS.MAIN_LAYOUT”的翻译。MAX_CHARACTER_COUNT'

message: this.translocoService.translate('MAIN_LAYOUT.MAX_CHARACTER_COUNT', {

我不使用 enUS,我的浏览器语言也不是 en-US 但我不认为这是由于spec.ts。 我有两种语言“en”和“ru” 我的spec.ts看起来像这样:

import { HttpClientModule } from '@angular/common/http';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { NgbActiveModal } from '@ng-bootstrap/ng-bootstrap';
import { TranslocoService } from '@ngneat/transloco';

import { TranslocoRootModule } from '../../../transloco-root.module';
import { MyModalComponent } from './my-modal.component';

describe('MyModalComponent', () => {
  let component: MyModalComponent;
  let fixture: ComponentFixture<MyModalComponent>;

  beforeEach(() => {
    TestBed.configureTestingModule({
      imports: [HttpClientModule, TranslocoRootModule],
      declarations: [MyModalComponent],
      schemas: [CUSTOM_ELEMENTS_SCHEMA],
      providers: [NgbActiveModal, TranslocoService],
    });
    fixture = TestBed.createComponent(MyModalComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

如何修复此警告消息?

angular 单元测试 警告 ts-jest

评论


答:

1赞 Joep Kockelkorn 9/15/2023 #1

由于默认设置默认为 。您正在导入带有默认值的,这些默认值不适用于单元测试。有一个用于单元测试的专用模块,它同步加载翻译。missingHandler.logMissingKeytrueTranslocoRootModuleTranslocoTestingModule

最好是遵循文档中的单元测试指南