Pruebas de Navegación con Angular y RouterTestingModule

Clase 35 de 38Curso de Unit Testing para MEAN con Jasmine

Resumen

¿Cómo probar un sistema de navegación en Angular?

¡Bienvenido a un viaje de aprendizaje donde pondremos a prueba el sistema de navegación en Angular! Como desarrolladores, realizar pruebas efectivas es fundamental para garantizar que nuestras aplicaciones funcionen sin problemas. Aquí, en este contenido, te guiaremos a través de los pasos esenciales para realizar estas pruebas utilizando Angular. Te prometo que, al final, tendrás la confianza para enfrentar desafíos similares en tus proyectos.

¿Qué es el NavigationService y cómo lo configuramos?

Dentro de la carpeta de servicios, contamos con un recurso esencial llamado NavigationService. Este servicio se encarga de controlar la navegación en nuestra aplicación mediante el router de Angular. Este es fundamental porque en su interior inyecta el router de Angular y ofrece funcionalidades como NavigateTo, para movernos entre las rutas.

Para configurar las pruebas:

  1. Dependencias Importantes:
    • Necesitamos incluir RouterTestingModule, una herramienta poderosa para trabajar con el router durante el proceso de testing.
  2. Configurar el Testbed:
    • Se requiere una variable que almacene el NavigationService.
    • En el bloque BeforeEach, configura el Testbed para asegurarse de inyectar el servicio.

Un ejemplo de cómo codificar estos pasos es:

import { TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { NavigationService } from './navigation.service';

beforeEach(() => {
  TestBed.configureTestingModule({
    imports: [RouterTestingModule],
    providers: [NavigationService]
  });
});

¿Cómo aseguramos la cobertura con el 100% de pruebas?

Realizar pruebas es vital, y queremos que nuestro código logre una cobertura completa. Te enseñaré cómo lograrlo probando métodos clave del NavigationService.

  1. Probar Navegaciones Específicas:
    • Métodos como GoToPins y GoToEditMode son objetivos cruciales para el testing.
  2. Uso de Spies:
    • Implementamos "spies" para observar y validar que las funciones se llaman correctamente.
    • Validamos que el método Navigate del router reciba los argumentos correctos.

Un ejemplo de prueba puede ser:

it('should navigate to AppPins', () => {
  const navigateSpy = spyOn(TestBed.inject(Router), 'navigate');
  navigationService.GoToPins();
  expect(navigateSpy).toHaveBeenCalledWith(['AppPins']);
});
  1. Verificación de Resultados:
    • Con cada ejecución de pruebas, verificamos en la consola que el número de tests aprobados aumenta.
    • Buscamos obtener el mensaje de éxito que indica una cobertura del 100%.

¿Qué pasos seguir después de asegurar el sistema de navegación?

Con un sistema de navegación sólidamente probado, ¡estás listo para seguir avanzando! A continuación, nos espera el desafío de probar las peticiones HTTP de nuestros servicios, lo cual es esencial para una aplicación Angular robusta. Usaremos métodos similares y el poderoso módulo de testing de Angular para asegurar que nuestras aplicaciones no solo navegan sin problemas, sino que también interactúan correctamente con servidores de datos.

¡Adelante, sigue aprendiendo y pon en práctica todo lo que has adquirido hasta ahora! Con cada prueba, te acercas a convertirte en un experto en Angular. Confiamos en que ya estás en el camino correcto para dominar este campo.