RxJs - тест оператора Jasmine Marbles Join - PullRequest
1 голос
/ 27 мая 2019

Вот тест forkJoin с оператором жасминового мрамора:

it('test1', () => {

 const a = cold('---a|', { a: 1 });
 const b = cold('---b|', { b: 2 });

 const observable = forkJoin(
   a,
   b
 );

 const expected = cold('---21');
 expect(observable).toBeObservable(expected);
});

Тест выдает следующие ошибки:

Expected $[0].frame = 40 to equal 30.
Expected $[0].notification.value = [ 1, 2 ] to equal '2'.
Expected $[1].frame = 40 to equal 50.
Expected $[1].notification.kind = 'C' to equal 'N'.
Expected $[1].notification.value = undefined to equal '1'.
Expected $[1].notification.hasValue = false to equal true.

Может кто-нибудь сказать мне, что я делаю неправильно?

1 Ответ

1 голос
/ 27 мая 2019

Сначала ---21 будет ждать три кадра, затем испустить '2', а затем испустить '1``. Fork join is not a merge it will emit once, and it will emit [1, 2] `.

Буквенно-цифровые шарики продвигаются на один кадр после того, как они излучают.Таким образом, и a, и b завершатся в кадре 4. Затем forkJoin разрешит emit.Затем forkJoin будет немедленно завершен (также в кадре 4).

Итак, ошибки, которые вы получаете:

Expected $[0].frame = 40 to equal 30. Первый элемент, отправляемый из объединения вил, находится в момент времени 4 (потому чтоa и b завершены в момент времени 4) не в момент времени 3.

Expected $[0].notification.value = [ 1, 2 ] to equal '2'. Излучаемое значение равно [1, 2], а не '2', как описано выше.

Expected $[1].frame = 40 to equal 50.
Expected $[1].notification.kind = 'C' to equal 'N'.
Expected $[1].notification.value = undefined to equal '1'.
Expected $[1].notification.hasValue = false to equal true.

Вы ожидаете'1' во время 5. Он получает complete во время 4.

Так что вы, вероятно, хотите ...

const expected = cold('----(a|)', { a: [1, 2] });
expect(observable).toBeObservable(expected);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...