Tengo una solicitud de búsqueda y nunca he podido analizar el json de la respuesta sin clonar la respuesta: response.clone().json() para el contexto:
fetch(url) { .then((response) => { response.clone().json() }) .((json) => { //updates a state from `useState` setResponse(json) })Soy 100% nuevo en las pruebas con Jest y testing-library, pero hasta ahora he configurado un simulacro para la función de búsqueda:
useEffect(() => { const mockedData = jest.fn(() => [{test: "title"}]); global.fetch = jest.fn().mockResolvedValue((mockedData) => Promise.resolve({ json: () => Promise.resolve(JSON.stringify(mockedData)) }) ) }, []); La prueba está fallando y dice: error fetching response: TypeError: response.clone is not a function .
Si elimino el simulacro de global.fetch , obtengo: ReferenceError: fetch is not defined notdefined . Entonces, ¿parece que necesito simular todas estas funciones?
Aparte de saber cómo puedo solucionar ese problema con la clone , me gustaría saber si hay otra forma en que pueda obtener estos datos sin clonarlos.
Tiene razón en que necesitaría simular todas las subfunciones, también clonar.
Pero también tiene razón en que no debería necesitar clonar los datos de fetch. Su sintaxis parece estar un poco apagada y no está devolviendo el json de su función.
Prueba esto
fetch(url) .then((response) => response.json()) .then((json) => { //updates a state from `useState` setResponse(json); });