Тест takeUntil с использованием эффекта NGRX с жасминовыми шариками не завершается должным образом

Учитывая два эффекта NGRX (с использованием нотации nrwl/nx dataPersistence), где второй связан с первым с помощью takeUntil:

@Injectable()
export class ModuleEffects {

  @Effect() effectOne$ = this.dataPersistence.fetch(ModuleActionTypes.ActionOne, {
    run: (action: ActionOne, state: ModulePartialState) => {
     return new SomeReturnAction();
    },
  });

  @Effect() effectTwo$ = this.dataPersistence.fetch(ModuleActionTypes.ActionTwo, {
    run: (action: ActionTwo, state: ModulePartialState) => {
      return this.service.apiCall().pipe(
        takeUntil(this.effectOne$),
        map(result => new SomeResultAction(result))
      );
    },
  });

Намерение состоит в том, чтобы прекратить генерировать SomeResultAction из-за ввода пользовательского интерфейса, как только будет генерирован effectOne$ (что отлично работает).

Сейчас я пытаюсь проверить эти эффекты, используя библиотеку jasmine-marbles:

    it('should stop emitting after effectOne$ has emitted', () => {
      const action = new ActionTwo();
      const interruptingAction = new ActionOne();
      const outcome = new SomeResultAction(mockedResult);
      actions = hot('        -a--a-ia|', { a: action, i: interruptingAction });
      const expected = cold('-b--b--b|', { b: outcome });

      expect(effects.effectTwo$).toBeObservable(expected);
    });

Этот тест завершается успешно, хотя я ожидаю, что наблюдаемая expected завершится после отправки interruptingAction.

Вы когда-нибудь находили решение для этого?

TabsNotSpaces 30.04.2020 20:15

Нет, на самом деле нет. Но, как старый призрак, преследующий меня, я только недавно снова взялся за тестирование наблюдаемых с помощью rxjs-marbles, и у меня возникает соблазн взглянуть на это еще раз.

Jens Habegger 30.04.2020 20:44
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
3
2
289
0

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