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

169
Vistas
Broma: los parámetros de registro pasan a una función llamada dentro de la prueba cuando la prueba falla

Tengo una prueba de Jest descrita como:

 it('Full name must be >= 3 letters', () => { ['', 'a', 'ab', 'a ', 'a ', ' a'].forEach((fullName) => { expect(() => userBuilder.build({ fullName })).toThrowError(); }); });

Cuando falla cualquier iteración, la prueba falla y me dirige a la línea de expect :

 user › Full name must be >= 3 letters expect(received).toThrowError() Received function did not throw 15 | ['', 'a', 'ab', 'a ', 'a ', ' a', 'asdf'].forEach((fullName) => { 16 | console.debug('testing', fullName); > 17 | expect(() => userBuilder.build({ fullName })).toThrowError(); | ^ 18 | }); 19 | }); 20 | at src/api/user/user.test.ts:17:53 at Array.forEach (<anonymous>) at Object.<anonymous> (src/api/user/user.test.ts:15:54)

lo cual no es muy útil ya que está en un bucle. Necesito saber qué parámetros se pasaron como fullName en la iteración cuando falló la expect .

De esta pregunta SO , sé que puedo usar algo como
test.each([...])('Full name must be >= 3 letters, testing: %s'){...
Pero aquí cada iteración se considera una prueba separada, y tengo cientos de iteraciones de este tipo en decenas de pruebas diferentes (el nombre completo debe tener <= 50 caracteres, el nombre completo debe contener solo alfa y espacios, etc.). Esto infla innecesariamente mi conjunto de pruebas imprimiendo el Full name must be >= 3 letters, testing: texto una y otra vez.

Sé que puedo console.debug('testing', fullName) para cada iteración, pero registra la salida para cada iteración, con algo de detalle agregado alrededor de cada salida, y no se imprime con el mensaje fallido, por lo que con múltiples pruebas , es difícil averiguar qué iteración falló para qué prueba. No sé cómo registrar la salida solo cuando falla una expectativa.

Parece algo tan simple para un corredor de pruebas que estoy seguro de que me debe estar perdiendo algo aquí.

No estoy seguro de si es importante, pero estoy usando ts-jest para mecanografiado.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Use describe para agrupar las reglas de validación, luego use test.each o forEach para hacer la prueba.

 describe('Full name must be >= 3 letters', () => { ['', 'a', 'ab', 'a ', 'a ', ' a'].forEach((fullName) => { it(`should throw error when full name is "${fullName}"`, () => { expect(() => userBuilder.build({ fullName })).toThrowError(); }); }); });

Entonces, el mensaje de falla se verá así:

 Full name must be >= 3 letters ✓ should throw error when full name is "" (9 ms) ✓ should throw error when full name is "a" (1 ms) ✕ should throw error when full name is "ab" (1 ms) ✓ should throw error when full name is "a " (1 ms) ✓ should throw error when full name is "a " ✓ should throw error when full name is " a" ● Full name must be >= 3 letters › should throw error when full name is "ab" expect(received).toThrowError() Received function did not throw 10 | ['', 'a', 'ab', 'a ', 'a ', ' a'].forEach((fullName) => { 11 | it(`should throw error when full name is "${fullName}"`, () => { > 12 | expect(() => userBuilder.build({ fullName })).toThrowError(); | ^ 13 | }); 14 | }); 15 | });
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