JestSe abre en una nueva pestaña es un corredor de pruebas creado por Facebook basado en Node. Es esto último lo que lo hace tan rápido comparado con Karma, dado que no necesitas un navegador para ejecutar las pruebas. Incluso si lanzas Karma de forma headless, Jest sigue superando a Karma ejecutando la misma suite de pruebas hasta 3 veces más rápido.
¡Así que empecemos!
El primer paso es ejecutar este comando:
npm uninstall -DE karma karma-chrome-launcher karma-coverage-istanbul-reporter karma-jasmine karma-jasmine-html-reporter @types/jasmine @types/jasminewd2 jasmine-core jasmine-spec-reporter
Con esto, eliminaremos los miles de millones de dependencias que necesitas para ejecutar Karma.
A continuación, eliminaremos estos archivos: karma.conf.js y src/test.ts usando este comando:
rm ./karma.conf.js ./src/test.ts
Ahora borraremos de types la propiedad jasmine y eliminaremos de la opción files la propiedad src/tests.ts en el tsconfig.spec.json. Nuestro archivo debería quedar así:
{ "extends": "./tsconfig.json", "compilerOptions": { "outDir": "./out-tsc/spec", "types": ["node"] }, "files": ["src/polyfills.ts"], "include": ["src/**/*.spec.ts", "src/**/*.d.ts"] }
Añadimos al tsconfig.json lo siguiente bajo compilerOptions:
{ ... "compilerOptions": { "types": ["jest"] } ... }
Instalamos jest y builder-jest:
npm i -DE jest @types/jest @angular-builders/jest
Ahora, en angular.json reemplazamos esta configuración:
{ "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "src/test.ts", "polyfills": "src/polyfills.ts", "tsConfig": "tsconfig.spec.json", "karmaConfig": "karma.conf.js", "assets": ["src/favicon.ico", "src/assets"], "styles": ["src/styles.css"], "scripts": [] } } }
con esta otra:
{ "test": { "builder": "@angular-builders/jest:run" } }
Por último, añadimos dentro de tsconfig.spec.json en la opción compilerOptions: "esModuleInterop": true.
¡Podemos ejecutar ng test y ejecutará las pruebas usando Jest!
En conclusión, no solo logramos ejecutar nuestras pruebas más rápido, sino que también logramos que los puntos de interrupción se lancen con una mayor tasa de éxito, necesitamos menos dependencias, menos configuración y tendremos características que Jest nos proporciona como test.eachSe abre en una nueva pestaña, snapshot testingSe abre en una nueva pestaña y utilidades para mockearSe abre en una nueva pestaña.
Y si ya has comenzado un proyecto y quieres migrar a Jest, te recomiendo que eches un vistazo a este codemodSe abre en una nueva pestaña que migrará la mayor parte del código a Jest.

