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

163
Visualizações
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 Respostas
Responde à pergunta

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 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