APP_INITIALIZER провал тестовых случаев

Я использую APP_INITIALIZER, чтобы сделать некоторые вызовы API, все работает нормально, но добавление

 { provide: APP_INITIALIZER, useFactory: MyProviderFactory, deps: [MyService], multi: true }

в app.module.ts не пройдя мои тесты. Вот мой файл app.module.ts

import { BrowserModule } from '@angular/platform-browser';
import { NgModule, APP_INITIALIZER } from '@angular/core';
import { RouterModule } from '@angular/router';
import { HttpClientModule } from '@angular/common/http';
import { LayoutModule } from '@angular/cdk/layout';

import { AppComponent } from './app.component';

import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
// tslint:disable-next-line:max-line-length

import { MyService } from './services/my-provider.service';

export function MyProviderFactory(provider: MyService) {
  return () => provider.getdata();
}


@NgModule({
  declarations: [
    AppComponent,
  ],
  imports: [
    BrowserModule,
    HttpClientModule,
    FormsModule,
    BrowserAnimationsModule,
    HttpClientModule,
    ReactiveFormsModule,
    RouterModule.forRoot([
      { path: '', component: AppComponent }
    ])
  ],
  providers: [ MyService,
              { provide: APP_INITIALIZER, useFactory: MyProviderFactory, deps: [MyService], multi: true }
            ],
  bootstrap: [AppComponent]
})
export class AppModule { }

Вот ошибка

"message": "An error was thrown in afterAll\nFailed: You provided 'undefined' where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.

Также, как проверить APP_INITIALIZER в приложении.

Любая помощь будет оценена.

1 ответ

Как говорит ваша ошибка, ваша фабрика не возвращает поток (наблюдаемый, обещание, массив или итеративный). Вместо этого вы возвращаете функцию.

Предполагая ваш MyService.getdata() возвращает один из тех, вы можете просто вернуть его return provider.getdata(),

Другие вопросы по тегам