¿Cómo simular/espiar el valor de una función devuelta después de llamar a otra función? En el siguiente ejemplo, me gustaría simular el valor resuelto para el método 'get' de api.get() pero he tenido dificultades para obtener ese valor con un simulacro de broma o spyOn. El problema es que el método get se devuelve después de llamar a la función como parte de axiosInstanceWrapper({}) .
axios-instance-wrapper.js:
... const axiosInstanceWrapper = function(params) { ... const instance = axios.create(otherInstanceParams); ... return instance; } module.exports = axiosInstanceWrapper;código:
import axiosInstanceWrapper from './axios-instance-wrapper'; const api = axiosInstanceWrapper({}); const result = api.get(MY_URL, myParams); <-- I want to mock this responsearchivo de prueba:
import axiosInstanceWrapper from './axios-instance-wrapper'; jest.mock('./axios-instance-wrapper', () => { return () => ({ default: jest.fn().mockReturnValue({ get: jest.fn() }) }); }); ... test('', () => { const spy = jest.spyOn(axiosInstanceWrapper, 'get').mockResolvedValue({ data: { customer: { subscriptionContracts: [], pageInfo: { hasNextPage: false, hasPreviousPage: false, } } } }); });Error que obtengo en esa línea:
Error: no se puede espiar la propiedad get porque no es una función; indefinido dado en su lugar
Otras cosas que he probado:
const spy = jest.spyOn(axiosInstanceWrapper.default, 'get').mockResolvedValue({ ... });