Как исправить ожидаемый $ .length = 2 равным 1 - PullRequest
1 голос
/ 19 июня 2019

Я хочу протестировать функцию ngLogger с жасминовым мрамором, но получена ошибка «Ожидается, что $ .length = 2 будет равно 1.»

Ожидается, что $ .length = 2 будет равно 1.

Ожидается, что $ [0] .frame = 0 будет равно 10.

Ожидается, что $ [0] .notification.value будет своего рода Наблюдаемым, но было Object ({type: 'TECHNICAL', level: 'ERROR).', msg:' test '}).

Ожидаемый $ [1] = Объект ({frame: 0, уведомление: Уведомление ({kind:' C ', значение: undefined, ошибка: undefined, hasValue:false})}) равно равно undefined.

export namespace GlobalUtils {
   export function ngLogger(error: string): 
                               Observable<Log> {
    return of({ type: LogEnum.TECHNICAL,
      level: LevelEnum.ERROR,
      msg: error } as Log
    );
  }
}



import { GlobalUtils } from './global.utils';

it('ngLogger should be return an Observable', () => {
    const expected = of({
      type: LogEnum.TECHNICAL,
      level: LevelEnum.ERROR,
      msg: 'test'
    });

    const expected$ = hot('-a', { a: expected });
    const result$ = GlobalUtils.ngLogger('test');

    expect(result$).toBeObservable(expected$);
  });

const expected$ = hot('a', { a: expected }); не имеет значения.const expected$ = hot('a|', { a: expected }); выдайте ошибку: Expected $[0].notification.value to be a kind of Observable, but was Object({ type: 'TECHNICAL', level: 'ERROR', msg: 'test' }). Expected $[1].frame = 0 to equal 10 затем я изменил const expected = of({ type: LogEnum.TECHNICAL, level: LevelEnum.ERROR, msg: 'test' }); на const expected = of({ type: LogEnum.TECHNICAL, level: LevelEnum.ERROR, msg: 'test' }); Я получаю ошибку Expected $[1].frame = 0 to equal 10. что это значит?

1 Ответ

0 голосов
/ 19 июня 2019

Во-первых, у вас есть 2 проблемы: мрамор должен быть (a|), так как вы описываете одновременное излучение и наблюдаемую конечную точку, что делается при использовании of.Вторая проблема заключается в том, что ваш ожидаемый уровень определен как наблюдаемый, и в нем должны быть только данные.И благодаря этому я научился использовать шарики:

const msg = 'test';
const expected = {
  type: LogEnum.TECHNICAL,
  level: LevelEnum.ERROR,
  msg,
}; // notice that this value should not be observable

const expected$ = hot('(a|)', { a: expected }); // also you are returning of which is ending immediately

const result$ = const result$ = GlobalUtils.ngLogger(msg);

expect(result$).toBeObservable(expected$);

Кроме того, здесь есть рабочий пример

...