es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Utilizando jest-fetch-mock y recibiendo null.

No estoy seguro por qué estoy recibiendo null cuando intento ‘burlar’ el fetch. Estoy utilizando React, junto con Punkapi. Estoy haciendo una solicitud de burla usando ‘jest-fetch-mock’.

fetch.mockResponseOnce(JSON.stringify([{test: “datos”}]))

Esta es mi respuesta falsa. Simplemente no puedo entender por qué estoy recibiendo null. Los datos que recibo son un objeto dentro de una matriz, lo cual funciona.

Esta es mi solicitud de búsqueda (funciona):

const random = async () => {
try {
const res = await fetch(“https://api.punkapi.com/v2/beers/random”);
const newData = await res.json();
return newData
} catch (e) {
return null
}
};

export { random }

Este es mi archivo de prueba:

import { random } from “./aleatorio”;
import fetch from ‘jest-fetch-mock’
test(“recopila datos”, async () => {
fetch.mockResponseOnce(JSON.stringify([{test: “datos”}]))

const datos = await random()

expect(datos).toEqual([{
test: “datos”
}])
})

También he actualizado mi setupTest.js agregando esto.

import fetchMock from ‘jest-fetch-mock’

fetchMock.enableMocks()

Actualización

Parece que estaba devolviendo NULL desde mi try catch, pero mi prueba aún falla.
La propiedad ‘json’ de indefinido no se puede leer, que proviene de mi función asincrónica aleatoria.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está en que el fetch no está siendo simulado correctamente. Trate de actualizar su archivo de prueba a lo siguiente:

    import { random } from “./random”;
    import fetch from ‘jest-fetch-mock’
    test(“recopila datos”, async () => {
    fetch.mockResponseOnce(JSON.stringify([{ test: “datos” }]))

    const data = await random()

    expect(data).toEqual([{
    test: “datos”
    }])
    })

    Asegúrese de utilizar fetch de jest-fetch-mock y no el fetch global.

Comments are closed.