Repository navigation
Testing
Jose Luis Castro García edited this page Oct 9, 2026
·
1 revision
- Jasmine: Framework de desarrollo guiado por comportamiento (BDD) utilizado para escribir las afirmaciones (assertions) y definir las suites de pruebas.
- Karma: Ejecutor de pruebas (test runner) oficial de Angular que levanta servidores locales y ejecuta los test en navegadores web reales (Chrome/Edge) con recarga en caliente (Hot Reloading).
- Angular TestBed: Utilidad nativa del framework para configurar e inyectar módulos, componentes autónomos (Standalone) y servicios simulados en un entorno de pruebas aislado.
-
Karma Coverage: Plugin integrado en la CLI de Angular para generar reportes exhaustivos de cobertura de código (salida resumida en la terminal y archivos HTML detallados en la carpeta
coverage/diagauto-frontend/).
npm run test # Ejecuta toda la suite de pruebas a través de Karma una vez
npm run test:watch # Mantiene Karma abierto en modo observador mientras desarrollas
npm run test:coverage # Pasa las pruebas y genera el reporte de cobertura HTML localEl proyecto exige de forma estricta un mínimo del 70% de cobertura en líneas, funciones, ramas (branches) y sentencias (statements). Este umbral está configurado dentro del archivo karma.conf.js. El comando npm run test:coverage fallará automáticamente en el servidor de CI si cualquier métrica cae por debajo de este límite:
// karma.conf.js (Configuración del umbral mínimo)
coverageReporter: {
dir: require('path').join(__dirname, './coverage/diagauto-frontend'),
subdir: '.',
reporters: [{ type: 'html' }, { type: 'text-summary' }],
check: {
global: { statements: 70, branches: 70, functions: 70, lines: 70 }
}
}La medición de cobertura se integró desde el inicio del Sprint 1, asegurando que cada tarea e historia de usuario se entregara con sus respectivas pruebas de regresión.
| Sentencias (Statements) | Ramas (Branches) | Funciones (Functions) | Líneas (Lines) |
|---|---|---|---|
| 94.15% | 91.20% | 90.48% | 94.62% |
El flujo de trabajo automatizado en .github/workflows/tests.yml se dispara en cada Pull Request hacia la rama main:
- uses: actions/setup-node@v4
with:
node-version: 22
cache: 'npm'
- run: npm ci
- run: npm run test:coverage
| Capa (Layer) | Qué se prueba exactamente | Ejemplo |
|---|---|---|
| Servicios de estado (Signals) | Acciones, estados reactivos y reglas de negocio derivadas. | Incremento automático del contador de vehículos al mutar la Signal; actualización de la Signal computed al activar filtros. |
| Servicios de API | URL de destino, método HTTP (GET, PATCH) y la estructura del cuerpo enviado (payload). |
Petición POST /vehicles con los datos del formulario estructurados de forma válida. |
| Interceptores HTTP | Captura de errores globales e inyección automática de datos de red. | Captura de un error 403 por límite Freemium excedido y redirección al Paywall; adjuntar cabeceras XSRF. |
| Enrutador y Guardas | Reglas de control de acceso y flujos de navegación privada. | Bloqueo de acceso a la pantalla /vehicles/new si el usuario no ha iniciado sesión o si ya tiene 4 vehículos en el plan básico. |
| Constantes y Utilidades | Mapeo de enumeraciones y funciones puras de validación. | El validador de matrículas devuelve true ante un formato estándar español (ej: 1234XYZ). |
| Componentes de Sección | Renderizado del DOM, interacciones del usuario y etiquetas de accesibilidad. | El botón de "Confirmar Vehículo" se deshabilita mediante [disabled] si el formulario de averías es inválido. |
| Componentes de Página (Views) | Composición estructural y renderizado condicional según el estado de la sesión. | La cuadrícula de la agenda (agenda-grid) solo muestra tarjetas si la Signal de vehículos tiene registros. |