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

89
Vistas
Los casos de prueba de espera asincrónicos fallaron al usar la biblioteca de prueba de javascript jest

Estoy usando Jest testing Library para algunas funciones simples de sincronización/espera. Pero está fallando una y otra vez ya que soy muy nuevo en bromas. y puede por favor responder lo que expect.assertions(1) hacer aquí

 function fetchData() { return new Promise((resolve) => { setTimeout(() => { resolve({ id: 1, name: "test", age: 20, }); }, 1000); }); } test("test async await", async () => { const data = await fetchData(); expect(data.id).toBe(1); }); test("async await error", async () => { expect.assertions(1); try { await fetchData(); } catch (e) { expect(e).toMatch("error"); } });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Como señalé en los comentarios, la prueba para el caso de "falla" realmente no tiene sentido si fetchData es la función real porque nunca "rechaza". Para probar el caso de falla en Jest, necesitaría activar de alguna manera el caso Promise.reject.

Si asumimos que fetchData es un envoltorio en una llamada API o algo más, podríamos imaginar algo como esto.

Es posible que tenga una biblioteca o un módulo que esté realizando llamadas API como:

 // api.js const api = { actualFetchData: () => { // this is the function that actually connects // to a data source and returns data }, }; module.exports = api;

Y su función fetchData que está tratando de probar se ve así:

 // fetchData.js const api = require("./api"); function fetchData() { return api.actualFetchData(); } module.exports = fetchData;

Luego, suponiendo que esta estructura coincida con lo que está trabajando, puede burlarse de las partes internas de fetchData y probar los casos de éxito y fracaso burlándose de actualFetchData y usando mockResolvedValue y mockRejectedValue .

 // fetchData.test.js const fetchData = require("./fetchData"); const api = require("./api"); jest.mock("./api"); const mockApiFetch = jest.fn(); api.actualFetchData = mockApiFetch; describe("when the underlying fetch resolves", () => { beforeEach(() => { mockApiFetch.mockResolvedValue({ id: 1, name: "test", age: 20, }); }); test("test async await", async () => { const data = await fetchData(); expect(data.id).toBe(1); }); }); describe("when the underlying fetch fails", () => { beforeEach(() => { mockApiFetch.mockRejectedValue(new Error("failed to get data")); }); test("async await error", async () => { expect(() => fetchData()).rejects.toThrow("failed to get data"); }); });

Notarás que no expect.assertions porque no parecía que agregara nada a la prueba. En su lugar, solo solía toThrow con el texto que coincidía con el error.

Me doy cuenta de que esto es hacer algunas suposiciones sobre un sistema que no ha descrito completamente en la pregunta inicial, por lo que es posible que esto no sea exactamente a lo que está tratando de llegar. Ojalá esté cerca.

about 4 years ago · Juan Pablo Isaza 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