Как сказать Jasmine Marbles возвращать массив как единое целое, а не как два отдельных вызова наблюдателей - PullRequest
1 голос
/ 12 апреля 2019

Тест Jasmine Marbles, который я пишу, вызывает Observable один раз для каждого элемента в массиве, когда я хочу, чтобы он вызывал Observable один раз и передавал весь массив.

Это тестовый код;

it('sends an action when fetching the conversion list', () => {
  const service_response = [CONVERSION_1, CONVERSION_2];
  const action = new ConversionActions.ConversionFetchList({ timestamp: 0 });
  const outcome = new ConversionActions.ConversionUpdatesReceived({ items: service_response });

  actions = hot('-(a|)', { a: action });
  const response = cold('-a|', { a: service_response });
  conversion_service.get_conversions.and.returnValue(service_response);

  const expected = cold('--b', { b: outcome });
  expect(effects.conversion_fetch_list$)
    .toBeObservable(expected);
});

В отладке я вижу, как наблюдаемый вызывается дважды: один раз для CONVERSION_1 и другой раз для CONVERSION_2. Но для этого нужно один раз вызвать наблюдателя с массивом преобразований.

1 Ответ

1 голос
/ 12 апреля 2019

Кажется, проблема была вызвана поддельным вызовом службы:

conversion_service.get_conversions.and.returnValue(service_response);

Это разбивало массив и возвращало его по одному элементу за раз.Изменение этого значения на:

conversion_service.get_conversions.and.returnValue([service_response]);

, кажется, решает проблему и говорит макету возвращать service_response как единый объект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...