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

226
Visualizações
La broma no detecta mi error lanzado en la función envuelta

Espero que mi función arroje un error cuando le falte un argumento.

Entiendo que, cuando intento probar si algo sale de una función, necesito envolverlo.

Como tal, mi prueba se ve así:

 describe('FUNCTION: saveImageToS3', () => { let date = new Date("2022-04-06T06:30:59Z"); test('throws error when missing required parameters', () => { expect(() => utils.saveImageToS3(undefined, date)).toThrow(`Missing required parameter for saveImageToS3:`) }) })

Mi función se ve así:

 exports.saveImageToS3 = async (camId, captureDate ) => { if (!camId || !captureDate) throw new Error(`Missing required parameter for saveImageToS3: ${!camId ? 'camId':''} ${!captureDate ?'captureDate':''}`) } try { /// ... do stuff with s3....// } catch (err) { throw err; } }

Cuando voy a ejecutar mi prueba, aparece el siguiente error en la consola:

D:\ruta\apis\lambdas\utils\utils.js:4561 lanza un nuevo error(`Falta el parámetro requerido para saveImageToS3: ${!camId ? ^

Error: Falta el parámetro requerido para saveImageToS3: camId en Object..exports.saveImageToS3 (D:ruta\apis\lambdas\utils\utils.js:81:9) en saveImageToS3 (D:\ruta\apis\lambdas\utils\utils .test.js:71:23) en Objeto. (D:\ruta\node_modules\expect\build\toThrowMatchers.js:83:11) en Object.throwingMatcher [como toThrow] (D:\ruta\node_modules\expect\build\index.js:342:21) en Object .toThrow (D:\path\apis\lambdas\utils\utils.test.js:71:80) en Promise.then.completed (D:\path\node_modules\jest-circus\build\utils.js:323: 28) en new Promise () en callAsyncCircusFn (D:\path\node_modules\jest-circus\build\utils.js:249:10) en _callCircusTest (D:\path\node_modules\jest-circus\build\run.js :276:40) en _runTest (D:\ruta\node_modules\jest-circus\build\run.js:208:3)

... y por lo tanto el corredor de prueba se bloquea.

¿Cómo puedo hacer que se ejecute esta prueba?

Notaré que tengo otras pruebas 'toThrow' que parecen funcionar perfectamente bien y que siguen el mismo camino aquí.

EDITAR: de nota, también probé un ajuste de función con nombre, con los mismos resultados del bloqueo del corredor de prueba:

 const wrappedFunction = () => utils.saveImageToS3(undefined, date) test('throws error when missing required parameters', () => { expect(wrappedFunction).toThrow(`Missing required parameter for saveImageToS3:`)
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

La función probada es una función asíncrona.

El código de prueba no está esperando la función, por lo que efectivamente, el error se genera después de que Jest intenta atraparlo. Agregue una espera a la llamada de función.

También debe agregar 'rechazos' porque está viendo una promesa fallida. Como esto:

 test('throws error when missing required parameters', async () => { await expect(async () => await utils.saveImageToS3(undefined, date)).rejects.toThrow(`Missing required parameter for saveImageToS3:`) })
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