【问题标题】:Can't build testing module with translate无法使用翻译构建测试模块
【发布时间】:2021-05-21 14:36:35
【问题描述】:

我正在尝试测试一个使用来自 ngx-translate 的翻译管道的组件,但无法构建测试模块。

component.html

<div class="container">
    <div class="row">
      <div class="col-12 my-4">
        <h1>
          {{'private.title' | translate }}
        </h1>
      </div>
    </div>
</div>

组件.ts

....

  constructor(
    public itemsService: ItemsService,
    private sortPipe: OrderByPropertyNamePipe,
    private cdr: ChangeDetectorRef,
    private modalService: ModalService
  ) { }

....

因此,除了 HTML 文件中的翻译管道,您看不到任何关于 ngx-translate 的内容。

component.spec.ts 文件

describe('Component', () => {
  describe('Default', () => {
    let component: Component;
    let fixture: ComponentFixture<Component>;
    let debugElement: DebugElement;
    beforeEach(
      waitForAsync(() => {
        TestBed.configureTestingModule({
          imports: [
            HttpClientTestingModule,  
            TranslateModule.forRoot(),
          ],
          providers: [
            ItemsService,
            OrderByPropertyNamePipe,
          ],
        })
        .overrideComponent(Component, {
          set: { changeDetection: ChangeDetectionStrategy.Default }
        })
        .compileComponents();
      }),
    );
    beforeEach(() => {
      fixture = TestBed.createComponent(Component);
      component = fixture.componentInstance;
      debugElement = fixture.debugElement;
      component.allItems = MOCK_ITEMS;

      fixture.detectChanges();
    });

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

抛出

NG0302:找不到管道“翻译”!

我尝试将模拟管道创建为https://stackoverflow.com/a/57604396/8889351,但也不起作用

有人知道如何正确构建测试模块吗?

提前致谢

【问题讨论】:

    标签: angular jestjs ngx-translate


    【解决方案1】:

    将 translateService 添加到您的提供程序中

    首先导入您的规范文件

    import { TranslateModule, TranslateService } from '@ngx-translate/core';
    

    并在此处添加

       imports: [
            HttpClientTestingModule,  
            TranslateModule.forRoot(),
       ],
       providers: [
            TranslateService,
            ItemsService,
            OrderByPropertyNamePipe
       ],
    

    这就是我在项目中的测试方式

    【讨论】:

    • 它仍然失败。 TranslateService 与我提到的错误无关 The pipe 'translate' could not be found!
    猜你喜欢
    • 2021-05-30
    • 2015-02-16
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 2020-04-02
    • 1970-01-01
    • 2019-06-13
    相关资源
    最近更新 更多