Модульное тестирование редукса-саги - PullRequest
0 голосов
/ 08 февраля 2020

У меня проблемы с тестированием саг, использующих эффект getContext. У меня есть сага, которая выглядит так:

function* inventorySaga(payload) {
  try {
    const api = yield getContext("api");
    const inventory = yield api.getInventory(payload);
    yield put(getInventorySuccess(inventory));
  } catch (e) {
    yield put(getInventoryFail("Error"));
  }
}

Когда я проверяю ее, api не определено. Как я могу издеваться над этим значением? Я хотел бы использовать подход runSaga вместо пошагового подхода generator.next(), если это возможно. Вероятно, это будет выглядеть примерно так:

test('should get inventory', async () => {
  const dispatched = [];
  const dummyInventory = { books: 1 };

  await runSaga({
      dispatch: (action) => dispatched.push(action),
      context: { ??? }
  }, inventorySaga, payload);

  // test context ???
  expect(dispatched[0]).toEqual(getInventorySuccess({ books: 1 }));
});
...