Ejecutar pruebas de Angular en un contenedor
Requisitos previos
Completa todas las secciones anteriores de esta guía, empezando por Containerizar una aplicación Angular.
Descripción general
Las pruebas son una parte crítica del proceso de desarrollo. En esta sección aprenderás a:
- Ejecutar pruebas unitarias con Jasmine usando Angular CLI dentro de un contenedor Docker.
- Usar Docker Compose para aislar tu entorno de pruebas.
- Garantizar consistencia entre pruebas locales y en contenedor.
El proyecto docker-angular-sample viene preconfigurado con Jasmine, así que puedes empezar rápido sin configuración adicional.
Ejecutar pruebas durante el desarrollo
La aplicación docker-angular-sample incluye un archivo de prueba de ejemplo en la siguiente ubicación:
$ src/app/app.component.spec.ts
Esta prueba usa Jasmine para validar la lógica de AppComponent.
Paso 1: Actualizar compose.yaml
Añade un nuevo servicio llamado angular-test a tu archivo compose.yaml. Este servicio te permite ejecutar tu suite de pruebas en un entorno containerizado aislado.
| |
El servicio angular-test reutiliza el mismo Dockerfile.dev usado para desarrollo y sustituye el comando por defecto para ejecutar pruebas con npm run test. Esta configuración garantiza un entorno de pruebas consistente con tu configuración de desarrollo local.
Tras completar los pasos anteriores, el directorio del proyecto debería contener los siguientes archivos:
├── docker-angular-sample/
│ ├── Dockerfile
│ ├── Dockerfile.dev
│ ├── .dockerignore
│ ├── compose.yaml
│ ├── nginx.conf
│ └── README.Docker.mdPaso 2: Ejecutar las pruebas
Para ejecutar tu suite de pruebas dentro del contenedor, ejecuta el siguiente comando desde la raíz del proyecto:
$ docker compose run --rm angular-test
Este comando:
- Inicia el servicio
angular-testdefinido en tu archivocompose.yaml. - Ejecuta el script
npm run testusando el mismo entorno que en desarrollo. - Elimina el contenedor automáticamente al terminar las pruebas, con el comando
docker compose run --rm.
Deberías ver una salida similar a la siguiente:
Test Suites: 1 passed, 1 total
Tests: 3 passed, 3 total
Snapshots: 0 total
Time: 1.529 sNotePara más información sobre los comandos de Compose, consulta la referencia de la CLI de Compose.
Resumen
En esta sección aprendiste a ejecutar pruebas unitarias de tu aplicación Angular dentro de un contenedor Docker con Jasmine y Docker Compose.
Esto es lo que lograste:
- Crear un servicio
angular-testencompose.yamlpara aislar la ejecución de pruebas. - Reutilizar
Dockerfile.devde desarrollo para garantizar consistencia entre entornos de desarrollo y pruebas. - Ejecutar pruebas dentro del contenedor con
docker compose run --rm angular-test. - Garantizar pruebas fiables y repetibles en todos los entornos sin depender de la configuración de tu máquina local.
Recursos relacionados
Consulta referencias oficiales y buenas prácticas para mejorar tu flujo de pruebas con Docker:
- Referencia de Dockerfile – Entiende todas las instrucciones y la sintaxis de Dockerfile.
- Buenas prácticas para escribir Dockerfiles – Escribe Dockerfiles eficientes, mantenibles y seguros.
- Referencia del archivo Compose – Aprende la sintaxis completa y las opciones para configurar servicios en
compose.yaml. - Referencia de la CLI
docker compose run– Ejecuta comandos puntuales en un contenedor de servicio.
Próximos pasos
A continuación aprenderás a configurar un pipeline de CI/CD con GitHub Actions para compilar y probar automáticamente tu aplicación Angular en un entorno containerizado. Esto valida tu código en cada push o pull request, manteniendo consistencia y fiabilidad en todo el flujo de desarrollo.