typescript - testarea efectelor NGRX cu Jasmine marbles
Încerc să testez un efect NGRX folosind jasmine-marbles, dar răspunsul pe care îl primesc de la effects.myEffect$pare să aibă operatori înglobați. Mă așteptam ca acesta să fie un observable care returnează o acțiune unică, simplă. Orice ajutor sau sugestie ar fi foarte apreciată.
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);}
)));
efectul meu arată așa:
@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(...)))
);
Fișierul meu package.json arată astfel:
"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",
observatori/nestuiți/sursă:
Eroarea pe care o primesc de la testul eșuat este, pe care poate presupun greșit că înseamnă că valoarea observabilă este goală?
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.
