JavaScript

Cómo depurar pruebas unitarias Jest en proyectos Node.js con TypeScript usando Visual Studio Code

La depuración de código es una parte clave dentro del desarrollo de software, ya que facilita la identificación y corrección de errores de forma eficiente. Algo que también se puede hacer con las pruebas unitarias. En esta entrada, se explicarán los pasos para configurar Visual Studio Code (VS Code) para depurar pruebas unitarias Jest en proyectos Node.js con TypeScript, pasos que también se pueden adaptar a proyectos creados con JavaScript.

Preparación de un proyecto

Para depurar pruebas unitarias Jest en proyectos Node.js con TypeScript, en primer lugar, es necesario disponer de un proyecto Node.js que use Jest para la creación de las pruebas unitarias. Para lo que se puede seguir el tutorial “Creación de una librería TypeScript”, cuyo código está disponible en la cuenta de GitHub de Analytics Lane.

El de ejemplo anterior ya cuenta con Jest y pruebas unitarias de ejemplo, pero si se parte de otro proyecto en primer lugar se debe instar Jest, los tipos y ts-jest con la siguiente línea:

npm install --save-dev jest @types/jest ts-jest

Una vez instaladas las dependencias se debe crear y configurar el archivo jest.config.js la raíz del proyecto. Para que Jest pueda compilar y ejecutar pruebas TypeScript es necesario agregar las siguientes líneas a este archivo:

module.exports = {
    preset: 'ts-jest',
    testEnvironment: 'node',
};

Configuración de Visual Studio Code

Una vez configurado Jest, es el momento de configurar Visual Studio Code (VS Code) para ejecutar las pruebas. Para esto es necesario disponer de un archivo launch.json en la carpeta .vscode. Si no es así, el método más sencillo para crear uno es seleccionar “Ejecución y depuración” en la barra lateral izquierda (el icono con un botón de play y un bicho) y luego en cree un archivo launch.json

Creación del archivo archivo launch.json en VS Code

Una vez creado el archivo launch.json solamente se tiene que abrir este y agrega una nueva configuración para Jest. La que debería tener un aspecto como el que se muestra a continuación:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Debug Jest Tests",
            "program": "${workspaceFolder}/node_modules/jest/bin/jest",
            "args": [
                "--runInBand",
                "--no-cache",
                "-i",
                "${relativeFile}"
            ],
            "console": "integratedTerminal",
            "internalConsoleOptions": "neverOpen",
            "windows": {
                "program": "${workspaceFolder}/node_modules/jest/bin/jest.cmd"
            }
        }
    ]
}

En donde se crea una nueva configuración llamada Debug Jest Tests que ejecutará las pruebas en modo depuración. Para ello se indica la ruta al archivo ejecutable de Jest ${workspaceFolder}/node_modules/jest/bin/jest, donde ${workspaceFolder} es una variable que representa el directorio raíz del proyecto abierto en VS Code. Los argumentos que se le pasan a Jest son:

  1. "--runInBand": Este argumento le indica a Jest que ejecute las pruebas en un solo hilo secuencialmente. Esto es útil cuando se depura código, ya que evita que las salidas de múltiples pruebas se mezclen, lo que facilita la comprensión de los resultados de la prueba.
  2. "--no-cache": Jest almacena en caché los resultados de las pruebas para mejorar la velocidad de ejecución. Sin embargo, cuando se está depurando, es preferible desactivar esta caché para estar seguro de que se están viendo los resultados más recientes de las pruebas.
  3. "-i": Este argumento, también conocido como --detectOpenHandles, indica a Jest que imprima información sobre los “manejadores abiertos” al finalizar las pruebas. Los “manejadores abiertos” son recursos como conexiones a bases de datos o archivos que no se cerraron correctamente al finalizar una prueba. Esta opción puede ser útil para identificar posibles fugas de recursos durante la depuración de las pruebas.
  4. "${relativeFile}": Este argumento especifica el archivo de prueba actual que se está depurando. ${relativeFile} es una variable que se expande para representar la ruta relativa del archivo de prueba en relación con el directorio raíz del proyecto. Al incluir este argumento, Jest ejecutará solo el archivo de prueba actual en lugar de todas las pruebas del proyecto, lo que agiliza el proceso de depuración.

Depuración de pruebas unitarias

En este punto, VS Code ya está configurado para depurar pruebas unitarias Jest en proyectos Node.js con TypeScript. Ahora solamente se deben seguir los siguientes pasos para iniciar el proceso:

  1. Abrir el archivo o archivos de prueba que desean depurar.
  2. Coloca puntos de interrupción en las líneas donde se desee detener la ejecución.
  3. Selecciona la configuración de depuración Debug Jest Tests en la vista de depuración de VS Code.
  4. Hacer clic sobre el botón de ”Iniciar depuración” para ejecutar Jest en modo de depuración.

Las pruebas se iniciarán y se ejecutarán hasta que se llega al primer punto de interrupción, momento en que la ejecución de código se parara.

Conclusiones

En esta entrada, se ha visto paso a paso cómo depurar pruebas unitarias Jest en proyectos Node.js con TypeScript usando VS Code. Usando para ello la herramienta de depuración nativa de VS Code. Al usar esta configuración, se podrá identificar y corregir fácilmente errores en las pruebas unitarias, mejorando así la calidad del código y acelerando el proceso de desarrollo.

Imagen de Gerd Altmann en Pixabay

¿Te ha parecido de utilidad el contenido?

Daniel Rodríguez

Share
Published by
Daniel Rodríguez

Recent Posts

Data Lake y Data Warehouse: diferencias, usos y cómo se complementan en la era del dato

En la era del dato, las organizaciones se enfrentan al reto de gestionar volúmenes masivos…

3 días ago

Documentar tu API de Express con TypeScript usando OpenAPI (Swagger)

En la serie Creación de una API REST con Express y TypeScript construimos una API…

5 días ago

Curiosidad: El sesgo de supervivencia, o por qué prestar atención sólo a los que “llegaron” puede engañarte

Durante la Segunda Guerra Mundial, la Fuerza Aérea de Estados Unidos quería reforzar sus aviones…

1 semana ago

Cómo abrir una ventana de Chrome con tamaño y posición específicos desde la línea de comandos en Windows

En muchas situaciones —ya sea para grabar un tutorial, tomar capturas de pantalla profesionales, probar…

2 semanas ago

La Paradoja del Cumpleaños, o por qué no es tan raro compartir fecha de nacimiento

Imagínate en una sala con un grupo de personas, por ejemplo, en una oficina, un…

2 semanas ago

Programador de tareas de Windows: Guía definitiva para automatizar tu trabajo (BAT, PowerShell y Python)

En el trabajo diario con ordenadores, es común encontrarse con tareas repetitivas: realizar copias de…

3 semanas ago

This website uses cookies.