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

Gini, KS y AUC: Cómo Medir la Calidad de un Modelo de Credit Scoring

Cuando un analista de riesgo presenta un nuevo scorecard ante el comité de dirección, la…

7 horas ago

Curiosidad: De dónde vienen foo, bar y foobar

Si revisáis código o documentación de otros programadores, tarde o temprano os toparéis con dos…

5 días ago

BG/NBD + Gamma/Gamma: el modelo probabilístico para CLV en compras continuas

Los dos artículos anteriores cubrieron el CLV clásico —una fórmula útil pero que trata a…

1 semana ago

Errores habituales al trabajar con DataFrames grandes en Pandas (y cómo evitarlos)

Hay un momento muy concreto en la vida de casi todo análisis: el código que…

2 semanas ago

Champion vs Challenger: Cómo los Bancos Validan Modelos Nuevos antes de Ponerlos en Producción

Has construido un nuevo modelo de credit scoring. Las métricas de validación son mejores que…

2 semanas ago

Cómo Comparar Dos Hipotecas con Todos los Gastos Incluidos

Comparar dos hipotecas parece sencillo: la que tenga el TIN más bajo es la mejor…

3 semanas ago

This website uses cookies.