Жасминовые шарики, тестирующие эффекты NGRX - PullRequest
1 голос
/ 31 мая 2019

Я пытаюсь проверить эффект NGRX с помощью jasmine-marbles, но в ответе, который я получаю от effect.myEffect $, похоже, есть вложенные операторы. То, что я ожидал, было заметным возвращением единственного, плоского действия. Любая помощь или вклад будет принята с благодарностью.

 it('Test Effect', async(inject([ServicesStub],
    async (servicesStub: ServicesStub) => {

      const payloadRequest = new RequestActionPayload();
      const actionRequest = new RequestAction(payloadRequest);

      const payloadResponse = new ResponseActionPayload();
      const actionResponse = new ResponseActionPayload(payloadResponse);

    const source = hot('a|', { a: actionRequest});

    const effects = new NewEffectService(new Actions(source), ...);

    const expected = cold('-a', { a: actionResponse });
    expect(effects.myEffect$).toBeObservable(expected);}
)));

мой эффект выглядит так:

  @Effect()
  myEffect$ = this.actions$
    .pipe(
      ofType(actions.REQUEST_ACTION),
      map((action: actions.RequestAction) => action.payload),
      switchMap(payload => ... do some work),
      map(([a, b]) => new actions.ResponseAction(new actions.ResponseActionPayload(...)))
    );

my package.json выглядит так:

"jasmine-marbles": "^0.5.0"
"rxjs": "^6.5.1",
"@ngrx/effects": "^7.4.0",
"@ngrx/router-store": "^7.4.0",
"@ngrx/store": "^7.4.0",
"@ngrx/store-devtools": "^7.4.0",

вложенные наблюдатели / источник:

enter image description here

Ошибка, полученная в результате неудачного теста, состоит в том, что я могу ошибочно предположить, что наблюдаемое значение пусто?

Expected $[0].frame = 0 to equal 10.
Expected $[0].notification.kind = 'E' to equal 'N'.
Expected $[0].notification.value = undefined to equal new actions.ResponseAction(new actions.ResponseActionPayload(...)).
Expected $[0].notification.error = TypeError: Cannot read property 'put' of null to equal undefined.
Expected $[0].notification.hasValue = false to equal true.
...