Compartir comentarios
Las respuestas se generan en base a la documentación.

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.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
services:
  angular-dev:
    build:
      context: .
      dockerfile: Dockerfile.dev
    ports:
      - "5173:5173"
    develop:
      watch:
        - action: sync
          path: .
          target: /app

  angular-prod:
    build:
      context: .
      dockerfile: Dockerfile
    image: docker-angular-sample
    ports:
      - "8080:8080"

  angular-test:
    build:
      context: .
      dockerfile: Dockerfile.dev
    command: ["npm", "run", "test"]

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.md

Paso 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-test definido en tu archivo compose.yaml.
  • Ejecuta el script npm run test usando 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 s
Note

Para 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-test en compose.yaml para aislar la ejecución de pruebas.
  • Reutilizar Dockerfile.dev de 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:


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.