Skip to content

Instantly share code, notes, and snippets.

@joseOlivares
Last active April 11, 2025 21:22
Show Gist options
  • Save joseOlivares/8b243a0bc2282f73679dcc74053bd7f5 to your computer and use it in GitHub Desktop.
Save joseOlivares/8b243a0bc2282f73679dcc74053bd7f5 to your computer and use it in GitHub Desktop.
Using Jest instead of Jasmine / Karma on Angular Apps for Unit Testing

Cómo Configurar Jest en un proyecto de Angular 18

Author info 🥷

José Luis Olivares

If you appreciate my effort, please endorse my skills on Linkedin


Angular CLI de manera oficial ha provisto soporte para utilizar Jasmine y Karma como herramientas para la realización de pruebas unitarias. A partir de Angular 16, Karma ha quedado obsoleto y se insta a la comunidad a utilizar frameworks de unit testing que ofrezcan mejor performance, como es el caso de Jest.  

1. Remover Jasmine y Karma (Remove Jasmine and Karma).

En VS Code, abrir una terminal en la ruta de la carpeta del proyecto de Angula y ejecutar:

npm remove karma karma-chrome-launcher karma-coverage karma-jasmine karma-jasmine-html-reporter jasmine-core jasmine-spec-reporter @types/jasmine @types/jasminewd2 

2. Instalar las dependencias de Jest (Install Jest Dependencies).

npm install --save-dev jest@latest @types/jest@latest ts-jest@latest jest-preset-angular@latest

Nota: Estas dependencias son solo para el ambiente de desarrollo.


3. Crear archivo de configuración (Create configuration file) jest.config.js

El archivo debe crearse en la raíz del proyecto.

image1

Contenido del archivo:

module.exports = {
  preset: 'jest-preset-angular',
  setupFilesAfterEnv: ['<rootDir>/setup-jest.ts'],
  testPathIgnorePatterns: ['<rootDir>/node_modules/', '<rootDir>/dist/'],
  collectCoverage: true,
  coverageDirectory: '<rootDir>/coverage',
  coverageReporters: ['html', 'text-summary'],
  coveragePathIgnorePatterns: [
    '/node_modules/',
    '/dist/',
    '.mock.ts',
    '.module.ts',
    '.routes.ts'
  ],
  moduleNameMapper: {
    '^src/(.*)$': '<rootDir>/src/$1'
  }
};


4. Crear archivo de entorno de pruebas (Create test environment file) setup-jest.ts

El archivo debe crearse en la raíz del proyecto.

image2

Contenido del archivo:

import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';

setupZoneTestEnv();


5. Actualizar el archivo (Update the file) package.json

La propiedad que se debe editar es "scripts", agregando los comandos para la ejecución de las pruebas con Jest.

  "scripts": {
      ...
     //Contenido generado por default del proyecto Angular
      ...
    "test":"jest",
    "test:watch": "jest --watch",
    "test:coverage": "jest --coverage"
  }

Quedará de la siguiente manera (Result):

image3


6. Modificar el archivo (Modify this file) tsconfig.spec.json

Asegurarse que el archivo esté configurado correctamente para poder utilizar Jest.

Contenido del archivo:

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/spec",
    "types": ["jest", "node"]
  },
  "include": [
    "src/**/*.spec.ts",
    "src/**/*.d.ts"
  ]
}

7. Probar que la configuración se realizó exitosamente (Test if the configuration was successful)

Ejecute el comando:

npm run test 

Si es un proyecto nuevo (con el contenido inicial generado por Angular) deberá ejecutarse sin errores:

image5


Para desplegar el porcentaje de covertura (Test coverage), ejecute:

npm run test:coverage 

Se mostrará un resultado similar al siguiente:

image6


Para ejecutar Jest en modo de detección de cambios (watch mode):

npm run test:watch 

image7

 

Encuentra el repositorio con el proyecto de ejemplo (Find the repository with the example project)

https://github.com/joseOlivares/angular-jest

 

If you appreciate my effort,

👋 please endorse my skills on Linkedin

 

🔥 Puedes encontrar más información sobre Jest, en https://jestjs.io/docs/testing-frameworks

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment