Я пытаюсь протестировать эффект, но не знаю, как с ним работать, когда он ловит ошибку.
Эффект
@Effect()
signup$: Observable<Action> = this.actions$.pipe(
ofType(AuthActionTypes.SIGNUP),
map((action: Signup) => action.payload),
switchMap((user: any) => {
this.userSignup = user;
return this.createUserGQL.mutate({ userInput: user });
}),
switchMap(() => {
return this.signInGQL.watch({
email: this.userSignup.email,
password: this.userSignup.password
}).valueChanges.pipe(map((login: any) => {
const authData = login.data.login;
return authData;
}));
}),
mergeMap((res: any) => {
const token = res.token;
this.localStorageService.setItem(AUTH_KEY, { token: token, isAuthenticated: true });
return [new SignupSuccess, new SetToken(token)];
}),
catchError(err => {
return of(new RetrieveError({ error: err }));
})
);
Spec
it('should emit RetrieveError on error', () => {
const userData: UserInputData = { name: 'test', email: 'test@test.com', password: 'secretsecret' };
const signupAction = new Signup(userData);
const error = 'ERROR';
const errorAction = new RetrieveError({
error: error
});
const valueSource = {
a: signupAction
};
const valueSourceError = {
e: errorAction
};
const source = cold('a', valueSource);
const expected = cold('e', valueSourceError);
const actions = new Actions(source);
createUserGQL.mutate.and.returnValue(throwError(error));
const effect = new AuthEffects(actions, router, localStorageService, createUserGQL, signInGQL);
expect(effect.signup$).toBeObservable(expected);
});
Ошибка Почему эффект имеет длину 2?[Ожидаемая $ .length = 2 будет равна 1. Неожиданно $ 1 = Объект ({frame: 0, уведомление: Уведомление ({вид: 'C', значение: не определено, ошибка: не определено, hasValue: false)})}) в массиве]. 1