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

198
Vistas
escriba Jasmine testcase para casos de error para que se vuelva verde

Tengo una función que devuelve el mayor número de una lista de variantes de parámetros, y si hay más de 5 parámetros arrojará un error:

 if (params.length > 5) { throw new Error('Too many arguments'); }

Cuando escribimos testcase para unit-test en Jasmine, ¿cómo esperamos el valor para el caso de tales errores (para que el testcase sea exitoso - color verde), porque no es el valor devuelto por la función? Aquí está mi código en las pruebas:

 const myLocalVariable1 = require('../src/get-bigest-number'); describe('CommonJS modules', () => { it('should import whole module using module.exports = getBiggestNumber;', async () => { const result = myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7); expect(result).toBe(new Error('Too many arguments')); }); });
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Hay un comparador de Jasmine toThrowError que se puede usar para comprobar que se produce un error. Opcionalmente, puede pasar un error personalizado y/o un mensaje de error como argumento para verificar que obtiene el error que espera y no algún otro error.

En tu caso sería:

 expect(() => { myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7); }).toThrowError('Too many arguments');

Tenga en cuenta que debe colocar su llamada de función dentro de otra función, de lo contrario, la ejecución de su función desencadena el error y rompe la prueba.

Sin embargo, si su función no acepta ningún argumento, simplemente puede pasar la función a la expect :

 expect(myFunctionWithNoArgs).toThrowError();
about 4 years ago · Juan Pablo Isaza Denunciar

0

Creo que debería ser así (no lo asigne al resultado y luego afirme el resultado):

 expect(myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7)).toThrow();

También puede hacerlo de la forma estándar de JavaScript con try/catch:

 it('should import whole module using module.exports = getBiggestNumber;', async () => { try { const result = myLocalVariable1.getBiggestNumber(1, 3, 6, 5, 4, 7); } catch (e) { expect(e.message).toBe('Too many arguments'); // Not sure about the below one but you can try it. We have to use .toEqual and not .toBe since it's a reference type expect(e).toEqual(new Error('Too many arguments'); } });
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