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

265
Vistas
Caso de prueba de promesa que falla solo para el nodo 16

Actualmente estamos actualizando de Node v12 a Node v16.

Después de la actualización de la versión del nodo, la siguiente prueba falla con este error.

[Rechazo de promesa no controlada: este error se originó al lanzar dentro de una función asíncrona sin un bloque catch, o al rechazar una promesa que no se manejó con .catch(). La promesa rechazada con el motivo "Error".] { código: 'ERR_UNHANDLED_REJECTION'

Pero, ¿por qué una versión de nodo causa esto?

Este error se detiene si .catch() del caso de prueba.
Pero sigue siendo un resultado incorrecto porque la instantánea ya no coincide si hago eso.

Esta es la prueba.

 it('should test', async () => { const thePromise = Promise.resolve({ json: () => { Promise.reject(new Error()); }, }); // validateData is fetch call. validateData.mockReturnValueOnce(thePromise); const rendered = renderModule({ state: { code: 'mockRefCode' } }); rendered.find('#btn').simulate('click'); await ((thePromise)).then().catch(); // If i remove this catch, above error gone but wrong snapshot (null snapshot). expect(rendered.find('#error')).toMatchSnapshot(); });

Este es el código que se está probando.

 export const validateCode = async (env, code) => fetch(`www.getapiresponse.example`); export const SomeReactComponent(props) { … const [validatingCode, setValidatingCode] = useState(false); const [validationError, setValidationError] = useState(''); const validateData = () => { if (!code) { setValidationError(langPack.emptyField); return; } setValidatingCode(true); validateCode(environment, code.trim()) .then((response) => response.json()) .then((body) => { if (body.response_status_code !== '200') { // some logging } else { setValidationError(''); } }) .catch(() => setValidationError(langPack.serviceError)) .finally(() => setValidatingCode(false)); }; … }

Si .catch() , la instantánea termina como nula.

La instantánea correcta debería ser algo como lo siguiente:

 - <div - className="error" - id="error" - > - service - </div>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Prueba esto :

 try { await thePromise } catch (e) { e.toBeInstanceOf(Error) }

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