Мрамор, проверяющий поведение субъекта с помощью жасминового мрамора - PullRequest
1 голос
/ 09 апреля 2019

Итак, я пытаюсь проверить поведение Субъекта, и оно не работает, и кажется, что некоторые вещи я не правильно понимаю. Рассмотрим следующий тест:

it('marble testing subject test', () => {
    const obs$: Subject<number> = new Subject<number>();

    obs$.next(42);
    obs$.next(24);

    expect(obs$.asObservable()).toBeObservable(hot('xy', { x: 42, y: 24 }));
  });

Это не с этим сообщением об ошибке:

Expected $.length = 0 to equal 2.
Expected $[0] = undefined to equal Object({ frame: 0, notification: Notification({ kind: 'N', value: 42, error: undefined, hasValue: true }) }).
Expected $[1] = undefined to equal Object({ frame: 10, notification: Notification({ kind: 'N', value: 24, error: undefined, hasValue: true }) }).

Мне кажется, я понимаю, почему: Subject (для документации) выдает значения только после начала подписки. Функция toBeObservable() (я предполагаю) подписывается на Subject, поэтому мои вызовы 2 next происходили до этого, поэтому они не излучали.

Итак, мой вопрос: как бы я протестировал что-то подобное? то есть тестирование серии выбросов от объекта с течением времени? Можно ли это сделать с тестированием мрамора? Я могу заставить его работать, заменив его на ReplaySubject, но если я это сделаю, мраморная диаграмма должна быть (xy) вместо xy.

Спасибо.

...