Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

384
Vistas
¿Cómo pruebo axios en Jest?

Tengo esta acción en React:

 export function fetchPosts() { const request = axios.get(`${WORDPRESS_URL}`); return { type: FETCH_POSTS, payload: request } }

¿Cómo pruebo Axios en este caso?

Jest tiene este caso de uso en su sitio para código asíncrono donde usan una función simulada, pero ¿puedo hacer esto con Axios?

Referencia: un ejemplo asíncrono

He hecho esto hasta ahora para probar que está devolviendo el tipo correcto:

 it('should dispatch actions with the correct type', () => { store.dispatch(fetchPosts()); let action = store.getActions(); expect(action[0].type).toBe(FETCH_POSTS); });

¿Cómo puedo pasar datos simulados y probar que devuelven?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Sin usar ninguna otra biblioteca:

 import * as axios from "axios"; // Mock out all top level functions, such as get, put, delete and post: jest.mock("axios"); // ... test("good response", () => { axios.get.mockImplementation(() => Promise.resolve({ data: {...} })); // ... }); test("bad response", () => { axios.get.mockImplementation(() => Promise.reject({ ... })); // ... });

Es posible especificar el código de respuesta:

 axios.get.mockImplementation(() => Promise.resolve({ status: 200, data: {...} }));

Es posible cambiar el simulacro en función de los parámetros:

 axios.get.mockImplementation((url) => { if (url === 'www.example.com') { return Promise.resolve({ data: {...} }); } else { //... } });

Jest v23 introdujo algo de azúcar sintáctico para burlarse de Promises:

 axios.get.mockImplementation(() => Promise.resolve({ data: {...} }));

Se puede simplificar a

 axios.get.mockResolvedValue({ data: {...} });

También hay un equivalente para las promesas rechazadas: mockRejectedValue .

Otras lecturas:

  • Broma burlándose de la documentación
  • Una discusión de GitHub que explica el alcance de la jest.mock("axios") .
  • Una pregunta relacionada que aborda la aplicación de las técnicas anteriores a los interceptores de solicitudes de Axios.
over 4 years ago · Santiago Trujillo Denunciar

0

Usé axios-mock-adapter . En este caso el servicio se describe en ./chatbot. En el adaptador simulado, especifica qué devolver cuando se consume el punto final de la API.

 import axios from 'axios'; import MockAdapter from 'axios-mock-adapter'; import chatbot from './chatbot'; describe('Chatbot', () => { it('returns data when sendMessage is called', done => { var mock = new MockAdapter(axios); const data = { response: true }; mock.onGet('https://us-central1-hutoma-backend.cloudfunctions.net/chat').reply(200, data); chatbot.sendMessage(0, 'any').then(response => { expect(response).toEqual(data); done(); }); }); });

Puedes verlo todo el ejemplo aquí:

Servicio: https://github.com/lnolazco/hutoma-test/blob/master/src/services/chatbot.js

Prueba: https://github.com/lnolazco/hutoma-test/blob/master/src/services/chatbot.test.js

over 4 years ago · Santiago Trujillo Denunciar

0

Podría hacerlo siguiendo los pasos:

  1. Cree una carpeta __mocks__/ (como lo señala el comentario de @Januartha)
  2. Implementar un archivo simulado axios.js
  3. Usar mi módulo implementado en la prueba

El simulacro sucederá automáticamente.

Ejemplo del módulo simulado:

 module.exports = { get: jest.fn((url) => { if (url === '/something') { return Promise.resolve({ data: 'data' }); } }), post: jest.fn((url) => { if (url === '/something') { return Promise.resolve({ data: 'data' }); } if (url === '/something2') { return Promise.resolve({ data: 'data2' }); } }), create: jest.fn(function () { return this; }) };
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda