【问题标题】:No provider for $injector- In AngularJs + Angular 8 Hybrid application unit test case$injector 没有提供者-在 AngularJs + Angular 8 混合应用程序单元测试用例中
【发布时间】:2023-03-30 22:52:01
【问题描述】:

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

我收到以下错误:

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

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

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

【问题讨论】:

    标签: angular unit-testing karma-jasmine angular-hybrid


    【解决方案1】:

    您可以为 $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 提供空对象。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 2019-07-06
      • 2021-01-22
      • 1970-01-01
      • 2019-05-15
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-23
      • 2017-08-23
      相关资源
      最近更新 更多