【问题标题】:Components that inject `FirebaseApp` result in `No provider for FirebaseApp` message when running tests在运行测试时,注入“FirebaseApp”的组件会导致“No provider for FirebaseApp”消息
【发布时间】:2018-04-29 15:18:20
【问题描述】:

在为我的 Angular 应用程序运行 ng test 时,对于将 FirebaseApp 来自 angularfire2 注入构造函数的组件,我收到此错误消息。

我知道对于常规服务,我会将服务添加到该组件规范文件的 providers 数组中,或者如果它是 http 服务,我可以将 HttpClientModule 添加到该规范文件的 imports但是我要为 Firebase 做什么?

尝试过没有运气:

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [
        AngularFireModule.initializeApp(environment.firebase)
      ],
      declarations: [
        BlogPostComponent,
        HeaderComponent,
        FooterComponent
      ]
    }).compileComponents();

    fixture = TestBed.createComponent(BlogPostComponent);
    component = fixture.componentInstance;
    element = fixture.nativeElement;
    de = fixture.debugElement;

    fixture.detectChanges();
  }));

【问题讨论】:

    标签: javascript angular unit-testing firebase karma-jasmine


    【解决方案1】:

    您需要将 FirebaseApp 放入规范中的提供程序桶中

      declarations: [
        ...
      ],
      providers: [FirebaseApp]
    

    如果你需要为那个应用程序存根值,你可以这样做

      declarations: [
        ...
      ],
      providers: [{ provide: FirebaseApp, useValue: someStubHere }]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-02
      • 2019-01-24
      • 2019-10-10
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 2018-11-09
      • 2021-12-11
      相关资源
      最近更新 更多