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

223
Visualizações
¿Cómo puedo deshabilitar la detección de rechazo no controlada de Jest?

Estoy escribiendo una prueba y simulando una respuesta API de falla. La biblioteca que actúa como cliente para esa API genera un rechazo no detectado en este caso.

Esto es 100 % un error en la biblioteca y estamos en proceso de desaprobar esa biblioteca, pero migrar de ella tomará algunas semanas más y necesito que pase mi prueba hoy.

Desafortunadamente, Jest no ofrece una funcionalidad para deshabilitar este comportamiento. jest-circus agrega sus propios manejadores y falla la prueba. Esto sucede en jest-circus/src/globalErrorHandlers.ts .

Intenté comentar el cuerpo de no uncaught en ese archivo y eso realmente "soluciona" mi problema, lo que confirma que estos controladores son lo que estoy buscando.

 /** * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ const uncaught = error => { // commenting-out this call to dispatchSync "fixes" the issue // (0, _state.dispatchSync)({ // error, // name: 'error' // }); };

Mi siguiente pensamiento fue hacer un process.removeAllListeners('unhandledRejection'); en mi prueba (en términos generales), pero eso no funciona, incluso cuando se ejecuta con --runInBand .

Después de un poco de depuración, descubrí que:

  • process.pid en mi prueba y parentProcess.pid en jest-circus son iguales, pero
  • process.listenerCount('unhandledRejection') y parentProcess.listenerCount('unhandledRejection') no son (cero y uno, respectivamente), y
  • process.mainModule no está undefined en mi prueba, pero parentProcess.mainModule está definido en jest-circus (nombre de filename: .../jest/bin/jest.js ).

Eso me confundió por completo. Parecen ser procesos diferentes, pero comparten el mismo pid .

Para depurar aún más, hice un

 // in my test beforeAll(() => { process.emitWarning('emitted warning process from my test. count: ' + process.listenerCount('unhandledRejection')); }); // in globalErrorHandlers.js parentProcess.on('warning', warning => { console.log('parentProcess warning', parentProcess.listenerCount('unhandledRejection'), ' --- ', warning); });

Y esto genera parentProcess warning 1 --- Warning: emitted warning process from my test. count: 0 a la consola, lo que supongo que indicaría que son el mismo proceso (lo cual tiene sentido), ¡pero de alguna manera el listenerCount difiere!

Como nota al margen, los injectGlobalErrorHandlers de jest-circus siempre se ejecutan antes que mi código de prueba, incluso el código de espacio global. restoreGlobalErrorHandlers siempre se ejecuta después de .

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