如何使用 MockBuilder(来自 ng-mocks)通过 TranslateTestingModule.withTranslations() 测试 Angular 组件

问题描述 投票:0回答:1

我正在使用 ng-mocks,想要测试使用翻译的角度组件。 我很想使用 .withTranslation 来尊重语言文件结构。 但我还没有找到使用 TranslateTestingModule 的方法,并且需要模拟 TranslateService,例如:

  beforeEach(() =>
      MockBuilder(MyDialogComponent)
        .mock(TranslateService, { instant: (key) =>
            key.includes('rejected') ? 'No!': 'OK!'
        })
        .provide(MyDialogService)
        .then(() => service = TestBed.inject(MyDialogService))
  );

有人知道如何获得它吗?

我尝试使用模拟构建器,例如:

const ngModule = MockBuilder(BonusDialogComponent)
      .provide(BonusDialogService)
      .build();

    ngModule.imports = [TranslateTestingModule.withTranslations(LANGUAGE, TRANSLATIONS)];
    service = TestBed.inject(BonusDialogService);
    return TestBed.configureTestingModule(ngModule).compileComponents();

但只得到了一个

No Provider for TranslateService

angular testing mocking angular-translate ng-mocks
1个回答
0
投票

谢谢你! 我找到了其他合适的解决方案:

  beforeEach(() => MockBuilder([
    MyDialogComponent,
    TranslateModule,
    TranslateTestingModule.withTranslations('de', de),
  ])
    .provide(BonusDialogService)
    .then(() => service = TestBed.inject(MyDialogService))
  );
© www.soinside.com 2019 - 2024. All rights reserved.