Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

92
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda