Pruebas de Espionaje en Objetos Globales y Métodos en JavaScript
Clase 33 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 crear pruebas para el objeto global Windows?
En el desarrollo de aplicaciones, es imprescindible asegurarse de que los componentes interactúen correctamente con objetos globales como Windows. Una de las maneras más efectivas de lograrlo es mediante pruebas. Aquí te guiaré sobre cómo establecer un espía en el objeto global Windows y verificar que haya sido llamado correctamente, utilizando JavaScript.
¿Qué es un espía en las pruebas de software?
Un espía es una técnica de prueba que permite observar las interacciones de un objeto particular durante la ejecución de un test. Sirve para asegurarse de que un método específico ha sido llamado con los parámetros esperados.
Configuración del espía en el objeto Windows
Para probar el componente que interactúa con Windows, especialmente su método open, seguimos los siguientes pasos:
- Crear un conjunto de pruebas: Define claramente las pruebas unitarias para tus componentes.
- Espiar el objeto Windows: Dado que
Windowsestá disponible globalmente en JavaScript, no necesitas importarlo. Espía el métodoopenutilizando la función de prueba adecuada, comospyOn. - Ejecutar la función: Llama a la función
component.openUrl(). - Verificar el comportamiento esperado: Asegúrate de que la función
openes llamada con los parámetros correctos. Por ejemplo, si deseas abrirhttps://plaxi.com, debes añadir también el parámetro '_blank' para asegurar que el sitio se abre en una nueva ventana.
// Ejemplo de espía y prueba en JavaScript
spyOn(window, 'open');
component.openUrl('https://plaxi.com');
expect(window.open).toHaveBeenCalledWith('https://plaxi.com', '_blank');
Al correr la prueba, los resultados exitosos y el coverage confirmarán que el método openUrl fue llamado correctamente.
¿Cómo gestionar el progreso de la aplicación en pruebas?
Además del objeto Windows, también es relevante probar componentes que tienen una relación de suscripción, como en aplicaciones con progresos activos. Aprendamos a testear estos casos.
Configuración del espía para manejar snacks
El objetivo es espiar interacciones con elementos tipo snackbar, que muestran notificaciones o avisos al usuario.
- Crear un espía en snackware: Usa el espía para controlar el componente de notificaciones.
- Definir pruebas adicionales: Implementa la suscripción al progreso del repositorio a través de callbacks.
- Simular datos iniciales: Asegúrate de tener un conjunto de datos o estado inicial sobre el cual probar.
- Espiar métodos pertinentes: Como
updatePin, para verificar su correcto funcionamiento al ser llamado con los argumentos esperados.
// Ejemplo para espiar métodos
const mockData = { id: 1, pin: '1234' };
spyOn(service, 'updatePin').and.returnValue(of(true));
component.tagName = 'Test';
fixture.detectChanges();
component.getPins();
expect(service.updatePin).toHaveBeenCalledWith(mockData);
Al final, la correcta configuración y verificación en tu suite de pruebas asegurarán que componentes que interactúan con servicios y eventos sean validados completamente.
Conclusión y reto adicional
Con esta configuración, tus pruebas garantizarán que tanto el objeto Windows como las funciones asociadas a eventos y progresiones cumplan su cometido. Te animo a crear una prueba adicional para updatePin, usando la información y los principios aprendidos. Esta práctica mejorará significativamente la robustez de tus aplicaciones y el manejo de componentes globales en JavaScript. ¡Adelante!