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

Cómo configurar Jest en Angular 18

Portada principal del artículo: Cómo configurar Jest en Angular 18

Cuando escribimos pruebas en Angular, Jasmine y Karma vienen configurados por defecto como librería de pruebas y test runner, pero el equipo de Angular ha estado trabajando para traer Jest a Angular.

Hoy vamos a experimentar con el Jest Builder para Jest (Experimental) en Angular 17. ¡Empecemos!

Crear la aplicación de ejemplo

Primero, vamos a crear una aplicación de ejemplo usando Angular 17. En mi caso, tengo Angular 15 instalado de forma global, ya que es la versión que utilizo en mi trabajo diario.

La forma más sencilla de crear un proyecto con Angular 17 sin tener que instalarlo globalmente es ejecutarlo mediante npx.

// crear el proyecto 
npx -p @angular/cli ng new lab
 
// generar componente y servicio
npx ng g c components/toaster
npx ng g s services/toaster

Para levantar la aplicación usando npx, ejecuta el siguiente comando: npx ng serve.

Para correr las pruebas en un proyecto de Angular 17 sin instalar nada globalmente, puedes usar el comando npx junto con Jasmine y Karma. Para lograrlo, simplemente ejecuta el siguiente comando: npx ng test.

Nuestro objetivo es usar el Jest Builder, pero antes de dar ese paso, debemos remover Karma y Jasmine de nuestro proyecto.

Eliminar Jasmine y Karma

Primero, vamos a eliminar Jasmine y Karma ejecutando el siguiente comando:

npm remove karma karma-chrome-launcher karma-jasmine karma-jasmine-html-reporter

Configurar el Jest Builder

A continuación, instalamos Jest, sus tipos y el builder en el proyecto:

npm i -D jest @types/jest @angular-builders/jest

Luego, actualiza la sección test en el archivo angular.json para utilizar el builder de Jest:

"test": {
          "builder": "@angular-builders/jest:run",
          "options": {
            "tsConfig": "tsconfig.spec.json",
            "polyfills": ["zone.js", "zone.js/testing"]
          }
        }

Guarda los cambios y vuelve a ejecutar el comando ng test, ahora usando Jest como el test runner por defecto para Angular (experimental).

Recibimos una advertencia porque todavía es "EXPERIMENTAL". Si revisas los tiempos, verás que la versión experimental tarda más que Jasmine (pero, por supuesto, ¡todavía no está optimizada!).

¡Se ve muy bien! Por supuesto, aún debemos esperar un poco para adoptarlo por completo, pero es un excelente avance para Angular. Actualmente, si quieres usar Jest con Angular, puedes utilizar el schematic: https://github.com/briebug/jest-schematic

ng add @briebug/jest-schematic

Puedes seguir el progreso de angular-jest builder o revisar mi proyecto de ejemplo.

¡Que lo disfrutes!

Parte de la serie Frontend

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

Ver serie completa

Preguntas Frecuentes

¿Cómo reemplazo Karma y Jasmine por Jest en un proyecto de Angular 18?

Para reemplazar Karma y Jasmine por Jest en Angular 18, primero desinstala los paquetes existentes ejecutando npm remove karma karma-chrome-launcher karma-jasmine karma-jasmine-html-reporter, luego instala Jest y su builder con npm i -D jest @types/jest @angular-builders/jest, y finalmente actualiza la sección test en angular.json para apuntar al builder de Jest.

¿Qué paquetes de npm necesito instalar para usar Jest en Angular?

Necesitas instalar tres paquetes como dependencias de desarrollo: jest para el propio test runner, @types/jest para obtener las definiciones de tipos de TypeScript de las APIs de Jest, y @angular-builders/jest, que proporciona el builder de Angular CLI para integrar Jest en el flujo estándar de ng test.

¿Cómo actualizo angular.json para usar Jest en lugar de Karma?

En angular.json, busca la sección test dentro de la configuración architect de tu proyecto y cambia la propiedad builder del builder por defecto de Karma a @angular-builders/jest:run. También puedes agregar opciones adicionales de Jest en el campo options de esa misma sección.

¿Puedo usar npx para crear un proyecto de Angular sin instalar el CLI de forma global?

Sí, puedes usar npx -p @angular/cli ng new nombre-de-tu-proyecto para crear un nuevo proyecto de Angular usando la versión más reciente del CLI sin instalarla globalmente. Esto resulta muy útil cuando tienes una versión más antigua instalada de forma global para proyectos de trabajo y necesitas generar una aplicación nueva con otra versión.

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.