Как я могу исправить этот сломанный Marble RXJS Observable test? - PullRequest
0 голосов
/ 16 июня 2019

Я не уверен, как работают горячие / холодные ответы в тесте ниже. Я настроил тест так, чтобы он ожидал ответа от службы пиццы и тестировал этот ответ, используя наблюдаемый тест мрамора ниже. Но похоже, что в реальном ответе я получаю дополнительное событие? Я не понимаю, как - это дополнительное событие нарушает тест!

Это эффект, который я пытаюсь проверить. Он вызывает услугу пиццы и возвращает все пиццы в случае успеха. Цель состоит в том, чтобы написать наблюдаемый тест, который проверяет, соответствует ли окончательная наблюдаемая величина, возвращенная службой пиццы, ожиданиям в тесте

getPizzas$ = this.actions$.pipe(
  ofType<GetAllPizzas>(PizzaTypes.GetPizzas,
  withLatestFrom(
    this.store$.pipe(select(fromRootStore.getPizzaId))
  ),
  take(1),
  exhaustMap(([customAction, pizzaId]): any => {  
    if (!pizzaId) {                       
      map(() => new BigProductError({ .   
           appmessage : "Boom"
      }));
    } .      
    return this.pizzaService.getPizzas(customAction.orderDetails, pizzaId)
      .pipe(
        map((pizzas) => new LoadPizzasSuccess(pizzas)),
        catchError(error => of(new LoadPizzasFailure(error)))
      );
  })
);

Тест, который я написал, был:

describe('GetPizzas', () => {
    test(`
      Get Pizzas successfully
    `, () => {
      const action = new GetAllPizzas();
      const success = new GetAllPizzasSuccess({'NumberOfPizzas': 2});

      actions$ = hot('-a', { a: action });
      const resp = cold('-a|', { a: { NumberOfPizzas: 2 } });
      const exp = cold('--a', { a: success });
      pizzaService.getPizzas = jest.fn(() => resp);

      expect(effects.pizzaService$).toBeObservable(exp);
    });

Такое ощущение, что я получаю дополнительное наблюдаемое событие в ответе (дополнительный ИФРАМ 30 в конце ответа ниже). Но я не могу связать это в тесте.

  Expected value to equal:
      [{"frame": 20, "notification": {"error": undefined, "hasValue": true, "kind": "N", 
"value": {"payload": {"NumberOfPizzas": 2}, "type": "[Pizzas API] Get All Pizzas Success"}}}]
  Received:
      [{"frame": 20, "notification": {"error": undefined, "hasValue": true, "kind": "N", 
"value": {"payload": {"NumberOfPizzas": 2}, "type": "[[Pizzas API] Get All Pizzas Success"}}}, 
{"frame": 30, "notification": {"error": undefined, "hasValue": false, "kind": "C", "value": undefined}}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...