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… 🙌
Introducción
Unit testing para servicios en Angular
Jest vs. Jasmine: entornos de testing para Angular
Fundamentos de unit testing en Angular
Tu primera prueba en Angular
Explorando matchers
Reporte de coverage
Mocha Report
Testing en servicios
Pruebas unitarias para servicios
Servicios con dependencias
Spies
Angular TestBed
TestBed + Spies
Proyecto
Setup y maquetación del proyecto
Product Service Http
Testing en consultas HTTP
HttpClientTestingModule
Generando Mocks
Pruebas para GET
Pruebas maliciosas para GET
Pruebas para POST
Pruebas para PUT y DELETE
Bonus
Pruebas a errores
Pruebas con interceptores
Pruebas al login
Pruebas a la API del navegador
GitHub Actions
Próximos pasos
Toma el Curso de Angular: Unit Testing para Componentes
Nicolas Molina
Aportes 26
Preguntas 6
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
ng --version
ng new ng-testing-services
//respuesta a las preguntas
yes
scss
cd ng-testing-services
code .
Nos vamos a fijar en archivos que no nos habiamos fijado previamente
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
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
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
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
browsers: ['ChromeHeadless'],
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
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
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?