Pruebas Unitarias en Angular: Testeo de Componentes y Servicios
Clase 31 de 38 • Curso de Unit Testing para MEAN con Jasmine
Contenido del curso
- 11
Pruebas Unitarias con Jasmine: Uso de spyOn para Simular Funciones
03:08 - 12

Configuración de Jasmine para Pruebas de Frontend
07:48 - 13

Configuración de Jasmine en Node.js para Pruebas Unitarias
06:18 - 14

Pruebas Unitarias en JavaScript con Jasmine: Uso de Funciones Básicas
09:10 - 15
Pruebas Unitarias con Jasmine: Matchers, Espías y Ciclos de Vida
04:11
- 16

Pruebas Unitarias con Jasmine en Node.js y Angular
02:54 - 17

Configuración de Pruebas Unitarias en Node.js con Jasmine
07:47 - 18

Configuración avanzada de Jasmine y reportes en Node.js
07:00 - 19

Implementación de Cobertura de Código con InstaBoot.js y NGC
03:29 - 20

Pruebas Unitarias de Servidor Express con Método GET en Node.js
14:10 - 21

Pruebas Unitarias de Código 500 en Métodos GET
04:44 - 22

Pruebas del Método PAUSE en Desarrollo Web
12:24 - 23

Pruebas de Métodos POST, PUT y DELETE en JavaScript Asíncrono
07:49
- 24

Pruebas Unitarias e Integración en Angular con Jasmine
03:53 - 25

Pruebas Unitarias de Componentes en Angular con Jasmine
09:21 - 26

Pruebas Unitarias en Angular: Rutas y Ciclos de Vida con Jasmine
08:22 - 27

Pruebas Unitarias en Angular: Simulación de Servicios y Componentes
12:48 - 28

Pruebas Unitarias en Formularios Reactivos con Angular
10:48 - 29

Pruebas Unitarias Avanzadas en Formularios Reactivos de Angular
10:03 - 30

Pruebas Unitarias en Angular: Navegación y Outputs HTML
07:48 - 31

Pruebas Unitarias en Angular: Testeo de Componentes y Servicios
14:56 - 32

Pruebas Unitarias en Jasmine: Espías y Stubs en Angular
10:55 - 33

Pruebas de Espionaje en Objetos Globales y Métodos en JavaScript
07:21
¿Cómo probar el layout en Angular asegurando cobertura completa?
Al trabajar en pruebas para garantizar un 100% de cobertura en nuestras funciones frontend, es crítico entender cómo implementar tests efectivos en nuestros componentes de Angular, especialmente en el layout. Aquí te guiamos sobre cómo realizar estas pruebas avanzadas.
¿Cómo configuramos el testbed y los servicios?
Como primer paso, configuramos el testbed, esencial en cualquier prueba en Angular. Nuestro componente layout utiliza dos servicios que debemos gestionar: el bottom sheet y el router.
-
Creación de Stubs para el Bottom Sheet:
- Define un stub para el servicio BottomSheet con un método
open.
class BottomSheetStub { open() {} } - Define un stub para el servicio BottomSheet con un método
-
Configuración del Router:
- Utiliza RouterTestingModule para manejar rutas en pruebas.
- Define rutas, incluyendo la raíz y una para habilitar el modo de edición.
RouterTestingModule.withRoutes([ { path: '', component: LayoutComponent }, { path: 'app/add', component: LayoutComponent } ])
¿Cómo evitar errores en los esquemas?
Para evitar errores ligados a componentes no definidos:
-
Asegúrate de importar esquemas relacionados con Angular Core, como CUSTOM_ELEMENTS_SCHEMA. Esto previene problemas al usar elementos personalizados:
schemas: [CUSTOM_ELEMENTS_SCHEMA]
¿Cómo implementar y verificar las pruebas?
Con nuestro testbed configurado, avanzamos con las pruebas.
-
Verificar
editModeen falso:- Navega a la raíz y asegúrate de que
editModeesfalse. - Usa el método
whenStablepara confirmar que el cambio en la aplicación quedó registrado.
it('should set editMode to false', async () => { // Configura el espía para verifyEditMode spyOn(component, 'verifyEditMode'); await fixture.whenStable(); expect(component.editMode).toBe(false); expect(component.verifyEditMode).toHaveBeenCalled(); }); - Navega a la raíz y asegúrate de que
-
Prueba sin errores
ng-zone:- Usa
NgZonepara garantizar que se reflejen los cambios correctamente.
fixture.ngZone.run(() => { component.router.navigate(['/']); }); await fixture.whenStable(); - Usa
-
Método Open del servicio Bottom Sheet:
- Crea un espía para
opendel servicio BottomSheet.
it('should open button sheet with ActionsComponent', () => { const openSpy = spyOn(component['bottomSheet'], 'open'); component.openButtonSheet(); expect(openSpy).toHaveBeenCalled(); expect(openSpy).toHaveBeenCalledWith(ActionsComponent); }); - Crea un espía para
¿Qué retos adicionales se pueden abordar?
El siguiente desafío que puedes asumir es asegurarte de que el método verifyEditMode reconoce cuando editMode es true. Además, enfócate en las pruebas de acciones del componente. Considera:
-
Stub del Pin Service
- Agrega métodos como
dismissyresolveActionServer.
- Agrega métodos como
-
Acciones de prueba en el OpenLink
- Simula un evento de mouse con
preventDefault.
- Simula un evento de mouse con
Sumérgete y desarrolla este conjunto de pruebas para perfeccionar tu cobertura en Angular. Al abordar estos retos, mejorando tus habilidades en la implementación de tests, estás fortaleciendo la calidad global de tu aplicación. ¡Adelante, sigue aprendiendo y perfeccionando!