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

736
Visualizações
Broma - ¿Cómo probar una llamada Fetch() que devuelve una promesa rechazada?

Tengo la siguiente función que usa fetch() para hacer una llamada a la API:

 export async function fetchCars(dealershipId) { return request('path/to/endpoint/' + dealershipId) .then((response) => { if (response.ok === false) { return Promise.reject(); } return response.json(); }) .then((cars) => { return parseMyCars(cars); }); }

Quiero probar cuándo falla la llamada (específicamente cuando se return Promise.reject() ). Tengo la siguiente prueba de broma en este momento:

 (fetch as jest.Mock).mockImplementation(() => Promise.resolve({ ok: false }) ); const result = await fetchCars(1); expect(request).toHaveBeenCalledWith('/path/to/endpoint/1'); expect(result).toEqual(Promise.reject());

pero recibo un mensaje de Failed: undefined al ejecutar la prueba. He intentado usar:

 (fetch as jest.Mock).mockRejectedValue(() => Promise.resolve({ ok: false }) );

pero recibe un mensaje similar Failed: [Function anonymous] .

¿Cuál es la forma correcta de probar la promesa rechazada aquí?

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Su prueba está fallando porque está lanzando una excepción. Necesita capturar esa excepción, hay muchas maneras de hacerlo, y usar el asistente de rechazos es una de ellas:

 it("should fail", async () => { (window.fetch as jest.Mock).mockResolvedValueOnce({ ok: false, }); await expect(fetchCars(1)).rejects.toEqual(/* error you are expecting*/); });
about 4 years ago · Juan Pablo Isaza Relatório

0

Hay un par de maneras de lidiar con esto correctamente. Creo que el problema es que estás esperando tu promesa.

Si planea usar await, entonces debe esperar el expect:

 const result = fetchCars(1); await expect(result).toEqual(Promise.reject()); // ✅ Correct setup

o simplemente puede devolver la promesa no esperada:

 const result = fetchCars(1); return expect(result).toEqual(Promise.reject()); // ✅ Correct setup

Si no regresa o espera lo esperado, es posible que observe que obtiene un falso positivo:

 const result = fetchCars(1); expect(result).toEqual(Promise.reject()); // ❌ False positive!

Creé un ejemplo de codesandbox que muestra cómo simular la función de búsqueda y cómo configurar correctamente la prueba, incluidas las formas incorrectas. Juega con la pestaña Pruebas en la parte superior derecha.

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