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

97
Vistas
¿Cómo dejar que la prueba falle en console.assert fail con Jasmine?

Usamosconsole.assert en nuestra base de código como parte de la programación defensiva para verificar algunas partes complicadas del código y anotar suposiciones sobre lo que se está haciendo en el código/los valores que calcula/asume, etc.

Ejemplo:

 function calculateSomething(a, b, c) { // assume, we know that the calculation result below should never be negative, because other logic assures that (b - c) < a (This is just an example.) // or that check is implemented here, but just to make sure you put that negative check before returning the value const result = a - (b - c); console.assert(result > 0, 'result must not be negative, but was', result); return result; } console.log('result 1:', calculateSomething(1, 2, 3)); // fails console.log('result 2:', calculateSomething(1, 3, 2)); // works

Ahora, nos dimos cuenta de que esto solo falla/imprime un mensaje de error en la consola en el código de producción/ejecuciones habituales del código, pero no explícitamente cuando las pruebas ejecutan el código.

¿Cómo puedes hacer que console.assert también falle en las pruebas?

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

0

De acuerdo, supongo que puede bloquearlo y, como puede ser útil, mantener el callThrough original además de callFake . Simplemente coloque esto en su beforeEach y sus pruebas respetarán console.assert y lo tratarán como un error:

Versión mecanografiada:

 const realConsoleAssert = console.assert; assertSpy = spyOn(console, 'assert').and.callFake((assertion: any, message?: string, ...optionalParams: any[]) => { realConsoleAssert(assertion, message, ...optionalParams); expect(assertion).toBeTruthy(`${message} ${optionalParams.concat(' ')}`); });

Versión de JavaScript:

 const realConsoleAssert = console.assert; assertSpy = spyOn(console, 'assert').and.callFake((assertion, message, ...optionalParams) => { realConsoleAssert(assertion, message, ...optionalParams); expect(assertion).toBeTruthy(`${message} ${optionalParams.concat(' ')}`); });

Especialmente, los parámetros optionalParams aún no son ideales y no los tratan tan elegantemente como puede hacerlo console.assert , por ejemplo, undefined se convierte en una cadena vacía mientras que la versión del navegador lo imprimirá correctamente, pero eso es solo un detalle menor en mi humilde opinión.

Sin embargo, esto podría simplificarse con una estrategia de espionaje personalizada .

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