0

我正在为 Angular 8 应用程序编写单元测试用例。这是 AngularJs + Angular 8 的混合应用程序。

我收到以下错误:

NullInjectorError: StaticInjectorError(DynamicTestModule)[TestService -> $injector]: 
  StaticInjectorError(Platform: core)[TestService -> $injector]: 
    NullInjectorError: No provider for $injector!

我不确定,如何模拟 $injector 类。我尝试了模拟TestService,在那种情况下我将无法涵盖一些集成测试用例。

任何模拟 $injector 类的帮助将不胜感激。

4

2 回答 2

0

您可以为 $injector 创建一个模拟对象。我在项目中遇到了 $rootscope 的类似问题,我使用 Angular 提供程序为 $rootscope 提供了一个空对象:

    {provide: '$rootScope',useValue : {}}

This provider will be part of TestBed configuration like this :

    beforeEach(async(() => {
        TestBed.configureTestingModule({
          declarations: [],
          imports: [],
          providers : [{provide: '$rootScope',useValue : {}}]
        })
          .compileComponents();
      }));

您可以根据您的要求提供任何虚拟值,而不是为 useValue 提供空对象。

于 2020-06-24T11:53:04.383 回答
-1

它是一个语法错误,TestService 导入正确的组件/模块。欲了解更多信息“ https://angular.io/start

于 2019-12-18T04:55:22.493 回答