Jasmine Marble Testing NgRx Effects - «Ожидаемый $ [0] .notification.value = ...» один объект, равный ЖЕ объекту - PullRequest
0 голосов
/ 18 июня 2020

Я пытаюсь написать тест для сценария 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'.

Это одно и то же, но Жасмин не считает, что это один и тот же объект.

Есть ли другой сопоставитель, который я могу использовать в этом тесте?

...