На действие Ngxs не подписывается автоматически, если он запускается как модульный тест - PullRequest
0 голосов
/ 01 марта 2019

У меня есть действие, которое обрабатывает запрос к серверу.Хотя все нормально, когда приложение развернуто, оно перестает работать, если я запускаю модульные тесты.Через некоторое время я узнал, что на акцию не подписаны, что происходит нормально.Я использую TestBed of Angular.Действие CreateContact отправляется, и метод create службы возвращает наблюдаемую информацию, которая выдает значение.

Кто-нибудь из вас имеет представление, в чем может быть проблема?

Действие в вопросе

@Action(CreateContactPageActions.CreateContact)
public createContact(
  ctx: StateContext<ContactStateModel>,
  action: CreateContactPageActions.CreateContact
): Observable<Contact> {
  ctx.patchState({
    error: null
  });

  return this.contactService.create(action.payload)
    .pipe(
      tap(contact => {
        ctx.dispatch(new ContactStateActions.CreateContactSuccess(contact));
      }),
      catchError(err => {
        ctx.dispatch(new ContactStateActions.CreateContactFailed(err));
        return EMPTY;
      }),
    );
}

Конфигурация TestBench

TestBed.configureTestingModule({
  imports     : [
    TranslateModule,
    FormsModule,
    BrowserModule,
    HttpClientTestingModule,
    TranslateModule.forRoot({
      loader: {
        provide : TranslateLoader,
        useClass: TranslateFakeLoader
      }
    }),
    NgxsModule.forRoot([]),
    NgxsModule.forFeature([ContactState]),
  ],
  declarations: [
    CreateContactPageComponent,
    ContactFormComponent,
    FormFieldErrorsComponent,
    ToFieldValidationErrorMessagesPipe,
  ],
  providers   : [

    {provide: Router, useValue: routerMock},
    {provide: ContactService, useClass: ContactServiceMock},
    Actions,
  ],
}).compileComponents();
...