Я не уверен, как работают горячие / холодные ответы в тесте ниже. Я настроил тест так, чтобы он ожидал ответа от службы пиццы и тестировал этот ответ, используя наблюдаемый тест мрамора ниже. Но похоже, что в реальном ответе я получаю дополнительное событие? Я не понимаю, как - это дополнительное событие нарушает тест!
Это эффект, который я пытаюсь проверить. Он вызывает услугу пиццы и возвращает все пиццы в случае успеха. Цель состоит в том, чтобы написать наблюдаемый тест, который проверяет, соответствует ли окончательная наблюдаемая величина, возвращенная службой пиццы, ожиданиям в тесте
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}}]