как имитировать ответ на асинхронный вызов внутри саг

#javascript #reactjs #react-native #jestjs

#javascript #reactjs #react-native #jestjs

Вопрос:

У меня есть код, который выглядит следующим образом:

 export function* terminateOrderSaga(action: Action) {
            const {orderId, onPaymentRequired} = action.payload;
            const {
                data: {unsubscribe: unsubscribeResponse},
            } = yield call(unsubscribeMutation, {
                orderId,
            });
    
            const {status, ticketInfo} = unsubscribeResponse || {};
            const {zones, price} = ticketInfo;
}
 

Я хотел бы высмеять этот запрос:

 yield call(unsubscribeMutation, {
   orderId,
});
 

Я попробовал несколько вариантов в тестовом файле, например:

 unsubscribeMutation.mockImplementationOnce({unsubscribe: {status: "OK", ticketInfo:{price:23, zones: 'ASD'}})
 

но id, похоже, не работает, похоже, что он все еще выполняет вызов серверу и не возвращает макет ответа!

Комментарии:

1. mockImplementationOnce ожидает функцию . Возможно, попробуйте использовать mockImplementationOnce(() => ({ unsubscribe: {status: "OK", ticketInfo:{price:23, zones: 'ASD'})) или использовать mockReturnValueOnce .