Тест эффекта takeUntil-using NGRX с жасминовыми шариками не завершен, как ожидалось - PullRequest
1 голос
/ 20 марта 2019

Учитывая два эффекта 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...