Angular 测试依赖模块

Angular test dependency module

我成功地对被测组件进行了单元测试。我必须向组件添加更多功能 - 工具提示和翻译。翻译服务是我的代码,我能够使用翻译服务和模拟翻译服务测试被测组件。

我遇到的问题是工具提示。这些来自 ng-bootstrap 并且可以通过在我的 app.module 中导入 NgbModule.forRoot() 来使用。 如果不像这样导入此模块,我将无法测试被测组件:

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [ComponentUnderTest, TestHostComponent],
      imports: [NgbModule.forRoot()],
      providers: [LocaleService],
    })
      .compileComponents();
  }));

这似乎不对,我不想测试模块中的任何内容。

如何在我的所有测试中导入这个模块?

我尝试在测试项目中使用工具提示来复制您的错误,但我没有遇到基本工具提示的问题。但是,一旦我开始使用 [ngbTooltip],它就会抛出错误,因为它无法识别此绑定。要解决这个问题,您需要使用 mock 指令创建一个 mock 绑定。以下似乎对我有用:

import { Directive, Input } from '@angular/core';

@Directive({
  selector: '[ngbTooltip]'
})
export class MockTooltipDirective {

  @Input()
  ngbTooltip: string;

  constructor() { }

}