🇺🇸 EN
Frontend
·2 min read·↗·🇺🇸 EN

Cómo probar errores con Jest en TypeScript

Portada principal del artículo: Cómo probar errores con Jest en TypeScript

Sigo trabajando con Jest y TypeScript. Ya sabemos cómo hacer aserciones sobre variables y objetos en nuestro código, así que el siguiente paso es aprender a manejar y probar errores.

La clase Calculator tiene un nuevo requerimiento: si el tipo de cálculo no es +, - o /, necesitamos lanzar un error.

La tarea consiste en editar la clase Calculator y agregar los siguientes pasos:

  • Definir un arreglo con la lista de acciones válidas.

  • Si la acción no está en el arreglo, lanzar un error.

Tu código se verá de la siguiente forma:

export class Calculator {
    static validActions: Array<string> = ['+',"-","/"];
    public static increase(value: number) {
        return value + 1;
    }
    public static generateCalcSetting(valueA: number, action: string, valueB: number) {
 
        if(!this.validActions.includes(action)){
            throw new Error("Invalid action");
        }
        
        let result : number;
        switch (action) {
            case "+":
                result = valueA + valueB;
                break;
            case "-":
                result = valueA - valueB;
                break;
            case "/":
                result = valueA / valueB;
            default:
                result = 0;
        }
       
  
        return  {
            valueA,
            mathAction: action,
            valueB,
            result
        }
    }
 
 }

Perfecto, ahora crea el archivo Calculator.test.ts y usa el matcher de Jest toBeInstanceOf(), que nos ayuda a verificar el tipo de dato. Para esto, necesitamos realizar los siguientes pasos:

  • Usar una sentencia try-catch.

  • Llamar a generateCalcSetting con parámetros incorrectos.

  • En el bloque catch, tomar el resultado devuelto, usar toBeInstanceOf y compararlo con el tipo Error.

  • Comparar que error.message sea igual a 'Invalid action'.

Tu código debería verse así:

    it('should return a error if is invalid action',() => {
        
        try {
            Calculator.generateCalcSetting(1,'M',5);    
        } catch (error) {
            expect(error).toBeInstanceOf(Error);
            expect(error.message).toBe('Invalid action');
        }
 
    })

Ejecutamos nuestras pruebas para ver el resultado:

npm run test
> calculator@1.0.0 test /home/dany/Desktop/calculator
> jest
 
 PASS  src/tests/Calculator.test.ts
  Calculator
    ✓ should return an error if is invalid action (1 ms)
 
Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        2.253 s
Ran all test suites.

¡Excelente! El matcher toBeInstanceOf nos permite verificar el tipo de error y también leer la propiedad message para validar que el mensaje de error sea el esperado.

¡Listo!

Parte de la serie Frontend

Modern frontend development — Angular, React, TypeScript, accessibility, and performance.

Ver serie completa

Artículos Relacionados

Compartir este artículo

Si esta guía te resultó útil, compártela con tu equipo o con otros desarrolladores.


Software real. Lecciones reales.

Comparto las lecciones que aprendí por las malas, para que puedas evitarlas o estar preparado cuando ocurran.

User avatar
User avatar
User avatar
User avatar
+13K

Únete a 13,800+ desarrolladores y lectores.

Cero spam. Cancela tu suscripción en cualquier momento.