Jest vs. Jasmine: entornos de testing para Angular

2/25
Recursos

Aportes 26

Preguntas 6

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Nico. Excelente labor que han hecho con este set de cursos con Angular. Y ahora este set de testing de igual manera con Angular. Sin duda los estoy aprovechando completamente. Y es la primera vez que experimentaré con pruebas… 🙌

En Angular 15 puede generar la configuración que falta haciendo

ng generate config karma

y luego modificarla según sus necesidades.

Este comando actualiza automáticamente el archivo de configuración angular.json.

Jasmine: es un framework de pruebas
Karma: es un test runner (corre las pruebas)

Karme corre por detras por lo que solo debemos pooner atención en Jasmine donde escribiremos las pruebas.

El framework más famoso de pruebas actualmente es Jest

¿Porqué no se hacen las pruebas en Jest?
Angular viene preconfigurado para hacer las pruebas en Jasmine por lo que no se deben preocupar por nada.

Angular maneja muchos patrones por si mismo, por ejemplo con un comando puedes instalar una PWA (progressive web app) o puedes confirgurar un service side rendering.

En framework de testing manejan la misma estructura por lo que no hay que procuparse del framework a utilizar. En especial cuando hablamos de código JS

Para poder inciar seguiremos los siguientes pasos

  1. Crear un proyecto desde el cmd
    1. Verifica si tienes instalado el CLI de Angular
	ng --version
  1. Crear el nuevo proyecto
ng new ng-testing-services

//respuesta a las preguntas
yes
scss
  1. Ingresamos al proyecto y lo abrimos en visual studio code
cd ng-testing-services

code .
  1. Nos vamos a fijar en archivos que no nos habiamos fijado previamente

  2. karma.config.js: Es la configuración del test running, por eso tiene un paquete para jasmine y uno para chrome, debido a que las pruebas se realizan contra un navegador, por lo que karma lanza las pruebas contra un navegador. Cabe reslatar que se puede cambiar de navegador

  3. Karma automaticamente va a leer todos los archvios .spec.ts por que son especificaciones de como ese servicio o componente debería funcionar. Aqui se puede encontrar varias pruebas que ya corren

Como correr pruebas

Vamos a la terminal y corremos el siguiente comando

ng test

posteriormente observamos las pruebas corridas en karma

WSL

Si estamos en wsl dentro de windows es necesario instalar la versión estable más reciente de google chrome y hacer unos cambios en el archivo karme.conf.js

  1. dentro del terminar de wsl con el usuario root corremos los siguientes códigos uno por uno
sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove

wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt -y install ./google-chrome-stable_current_amd64.deb

google-chrome --version
  1. cambiamos el código de karma.conf.js
    browsers: ['ChromeHeadless'],
  1. corremos las pruebas y visualizamos si funciona

Que tal 😃, En la versión 15 de Angular se eliminaron algunos archivos de configuración para hacer más fácil el entendimiento del framework para nuevos desarrolladores. Karma.conf.js ya no se crea por default con el ng new, sin embargo lo podemos agregar manualmente, acá el archivo: https://github.com/platzi/curso-angular-unit-testing-servicios/blob/step-1/karma.conf.js . También deberiamos agregarlo al Angular.json en la sección de tests:

"test": {
          "builder": "@angular-devkit/build-angular:karma",
          "options": {
            "polyfills": [
              "zone.js",
              "zone.js/testing"
            ],
            "tsConfig": "tsconfig.spec.json",
            "karmaConfig": "karma.conf.js", //Add this line :)
            "inlineStyleLanguage": "scss",

en windows con wsl en 25 de mayo del 2022, sin problema

Instale todo bien, solo que tuve que ejecutar un paso mas despues del segundo, para que pudiera installar y asi ver la versión:

1.sudo apt update && sudo apt -y upgrade && sudo apt -y autoremove

2. wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo apt -y install ./google-chrome-stable_current_amd64.deb

3. sudo apt -y install ./google-chrome-stable_current_amd64.deb

luego del tercer paso si funciono perfecto

Si estan usando angular 15 o superior el ng new ya no incluye ciertos archivos por defecto. Seguir la guia de para añadirlos

Recuerda que si usas NVM (node version manager ) en windows debes utilizar estos comandos : * Para crear el proyecto : npm init @angular@latest \[project-name] * Para iniciar el proyecto : npm start * Para testing : npm test
![]()![]()`23 04 2024 22:41:58.453:ERROR [launcher]: Cannot start Chrome` ` Can not find the binary /mnt/c/Program\ Files/Google/Chrome/Application/chrome.exe` ` Please set env variable CHROME_BIN` `23 04 2024 22:41:58.453:ERROR [launcher]: Chrome stdout:` `23 04 2024 22:41:58.453:ERROR [launcher]: Chrome stderr: ` `Hola Comunidad.. estoy teniendo este problema con wsl2.. agradecería cualquier ayuda.`
Porque se debe usar wsl o una distribución de linux, si puedo correr en node en la terminal de windows
en javascript manejan la misma estructura, pero el tema no es eso, el tema es que angular maneja formularios, inyección de dependencias, estados entre otros. Por esa razón si el curso es de angular debe ser con Jasmine debido a que es la suit de testing que provee Angular.
tengo una mac... pero lo siento chicos... prefero mil veces windows y uso la mac solo para ver los videos y uso windows (a veces WSL) para tirar código
Si tuvieron el error de 20 11 2023 14:29:37.358:ERROR \[launcher]: Cannot start ChromeHeadless \[1120/142937.341178:ERROR:exception\_handler\_server.cc(361)] getsockopt: Invalid argument (22) \[1120/142937.341904:ERROR:socket.cc(153)] unhandled cmsg -1431655766, -1431655766 la solución está aquí <https://github.com/karma-runner/karma-chrome-launcher/issues/214> Deben de usar el chromo de windows y enlazarlo al wsl, en link explican los comados y recuerden cambiar la dirección del chrome de windows por la de ustedes ajustando username y program file

Karma ha sido deprecado y para angular recomiendan el uso de Jest como test runner:
https://github.com/karma-runner/karma#karma-is-deprecated-and-is-not-accepting-new-features-or-general-bug-fixes
De igual manera, desde la versión 16 de angular han comenzado a hacer pruebas experimentales para el soporte de Jest:
https://blog.angular.io/moving-angular-cli-to-jest-and-web-test-runner-ef85ef69ceca

Que gran profesor puede hacer que el proceso de aprendizaje sea interesante y agradable, alentando a los estudiantes a seguir adelante y a aplicar lo que han aprendido, un plus de conocimientos.

Las versiones recientes de angular-cli no instalan el archivo karma.conf.js, al menos en wsl, si esto te sucede debes correr el comando ng g config karma y luego hacer la configuracion que indica el profesor.

Una cosa, no se si es solo a mi, yo no tengo esos archivos, añadidos ni el WSL, pero con la v15.0 como decis, que han eliminado el archivo de configuración de karma, yo hago ng test y los tests se ejecutan, sin problemas en el chrome, y repito no tengo WSL, ni karma.conf.js, sil os han eliminado de todas formas los tests se ejecutan, los habrán integrado de otra forma…???

Los que depronto estén en este curso con windows sin una pc configurada para angular como me pasó a mi, les recomiendo instalar node con paquetes npm para que no les falle.

Para los que tienen Edge pueden utilizar este paquete:
https://github.com/ChiragRupani/karma-chromiumedge-launcher
A mi me funciono correctamente!

En mi instalación (ubuntu 20.04) no se encontraba definida la variable de ambiente CHROME_BIN (error: set “chrome_bin” env variable).

Busqué el ejecutable:

whereis chromium

chromium: /etc/chromium /snap/bin/chromium.chromedriver /snap/bin/chromium

Definí la variable de ambiente:

export CHROME_BIN=/snap/bin/chromium

ng test

Tembién probé con brave, ya que se encuentra basado en Chromium:

export CHROME_BIN=/opt/brave.com/brave/brave

ng test

Si tienen Firefox instalado pueden instalar y configurar este launcher, solo tienen que agregarlo a los arreglos de plugins y browsers, así:

plugins: [
  ...
  require('karma-firefox-launcher')
  ...
],
...,
browsers: [
  'Firefox'
]

A mí me funciono a la primera y creo que es una alternativa sin tanta configuración.

Lo desplegué usando safari en macOS

vamoss

Nicoo!!! Gracias, muchas gracias. El paquete de cursos de Angular me han ayudado bastante y estoy super animada con el paquete de cursos de testing!

Buen aporte para la parte final de las pruebas, los desarrolladores podrán aplicar a sus pruebas de código y modulares, también ayuda a los Testers a verificar si los resultados de las pruebas de desarrollo son las correctas para que un producto inicie las pruebas de Testing.

Tengo mac os, funcionó sin problemas