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.

Cómo simulizar la respuesta de Axios get con jest

¿Cómo imito una respuesta de axios get? Esta prueba está fallando con el siguiente error:

Error: expect (jest.fn ()).toHaveReturnedWith (esperado)

Esperado: {"prueba": "prueba"}
Recibido: {}

Número de retornos: 1

Esta es la prueba que estoy ejecutando:

jest.mock ('axios');
const axios = require ('axios');

describe ('GET / searchLocation', () => {
    it ('debe devolver un objeto simulado', () => {
        const mockResp = {prueba: 'prueba'};
        axios.get.mockResolvedValue (mockResp);
        axios.get ('/');
        expect (axios.get) .toHaveBeenCalledWith ('/'); // pasa
        expect (axios.get) .toHaveReturnedWith (mockResp); // falla
    });
});
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para simular una respuesta de axios.get en Jest, se puede utilizar la función jest.mock() para simular el módulo axios. Luego, se puede usar la función mockResolvedValue() para simular el valor que será devuelto por la función axios.get().

    En la prueba proporcionada, el mensaje de error indica que se llamó a la función axios.get(), pero no se devolvió el valor esperado.

    Para solucionar esto, asegúrese de usar await o .then() para esperar a que la función axios.get() se complete antes de validar la respuesta.

    Aquí hay una versión actualizada de la prueba:

    jest.mock('axios');
    const axios = require('axios');
    
    describe('GET /searchLocation', () => {
        it('debería devolver un objeto simulado', async () => { // agregar async para usar await después
            const mockResp = { test: 'test' };
            axios.get.mockResolvedValue(mockResp);
    
            const response = await axios.get('/'); // usar await para esperar que axios.get() se complete
            expect(axios.get).toHaveBeenCalledWith('/');
            expect(response.data).toEqual(mockResp); // validar contra el objeto de respuesta.data
        });
    });
    

    Aquí, use await axios.get('/') para esperar la respuesta de axios.get(), luego valide la respuesta usando toEqual(mockResp).

Comments are closed.