Я пытаюсь написать тест для сценария error следующего эффекта:
accounts.effects.ts:
...
@Effect()
createAccount = this.actions$.pipe(
ofType<AccountActionTypes.AccountActions>(AccountActionTypes.createAccount.type),
mergeMap(x => this.accountService.createAccount(x["account"])
.pipe(
map(*returns the account*),
catchError(() => Observable.of({ type: AccountActionTypes.AccountTypes.CreateAccountFailed }))
)
)
);
и account.actions .ts:
...
export enum AccountTypes {
CreateAccountFailed = '[accounts component] Create Account FAILED',
}
...
Вот тест:
accounts.effects.spe c .ts
import * as actions from '../actions/account.actions';
...
it('should return an error', () => {
// start-action and completion-action
const error = 'Error occurred';
const action = actions.createAccount;
const completion = actions.AccountTypes.CreateAccountFailed;
// set up the Effect
actions$.stream = hot('-a', { a: action });
const response = cold('-#|', {}, error);
const expected = cold('--b', { b: completion });
spyOn(accountService, 'createAccount').and.returnValue(response);
expect(effects.createAccount).toBeObservable(expected);
});
Ниже приведен сбой теста:
Chrome 0.0.0 (Windows 10 0.0.0) AccountEffects should return an error FAILED
Expected $[0].notification.value = Object({ type: '[accounts component] Create Account FAILED' }) to equal '[accounts component] Create Account FAILED'.
Это одно и то же, но Жасмин не считает, что это один и тот же объект.
Есть ли другой сопоставитель, который я могу использовать в этом тесте?