APP_INITIALIZER провал тестовых случаев - PullRequest
0 голосов
/ 20 февраля 2019

Я использую 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 Ответ

0 голосов
/ 20 февраля 2019

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

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

...