Я написал сагу, в которой используется yield select
, чтобы получить часть состояния избыточного хранилища и сохранить его в локальной переменной.Переменная - это объект с тремя разными ключами, а значение каждого ключа - это массив объектов внутри него.
Мои тесты redux-saga продолжают терпеть неудачу, потому что я создаю эту локальную переменную в саге, которая использует данные из начального yield select
, а в тестах эта переменная всегда равна undefined
, что вызывает остальные мои тестыв этой саге потерпеть неудачу.Я видел много примеров того, как смоделировать возвращаемое состояние yield select
в саге с редуксом, но это всегда в контексте следующего вызова сундука.Как смоделировать возвращаемое состояние для локальной переменной?
Вот мой код:
export default function* orderSelectionFlow({ payload }) {
try {
const orders = yield select(getOrders); // retrieve relevant part of redux store
const activeOrder = orders[payload.orderStatus].find(order => order.id === payload.orderId); // this variable is always undefined in my tests, because I am not sure how to mock `orders` for a local variable.
const activeOrderId = payload.orderId;
const isConnected = yield select(getIsConnected); // test for this select fails because activeOrder is undefined
Мой тест (до соответствующей точки) -
describe('test order selection flow', () => {
const navSpy = jest.spyOn(AppNavigator, 'navigate');
const action = {
type: 'galactica/orders/VIEW',
payload: {
orderStatus: 'OPEN',
orderId: 1
}
};
afterAll(() => {
jest.resetModules();
navSpy.mockRestore();
});
it.next = sagaHelper(orderSelectionFlow(action));
it.next('should get all orders', (result) => {
expect(result).toEqual(select(getOrders));
});
it.next('should use connected state', (result) => {
expect(result).toEqual(select(getIsConnected));
});
Заказы в настоящее время не определены, но если бы я смогла высказать значение, это было бы
orders: {
'OPEN': {
orderId: 1
}
}