Configuración de Bases de Datos para Pruebas End-to-End con Docker
Clase 16 de 25 • Curso de End to End Testing para APIs REST con Node.js
Contenido del curso
- 2

Exploración y Configuración de APIs con Insomnia y Postman
10:37 - 3

Pruebas en Node.js con Jest y Clean Architecture
10:06 - 4

Configuración y uso de Jest para pruebas end-to-end en JavaScript
08:04 - 5

Pruebas End-to-End con Supertest y Node.js
13:47 - 6

Buenas prácticas en pruebas con Jest y manejo de ciclos abiertos
08:30
- 7

Configuración de Entorno de Pruebas para Aplicaciones Node.js con Twen.js
11:25 - 8

Generación de Reporte de Cobertura con Pruebas End to End
07:32 - 9

Pruebas de Integridad de Datos con DTOs y Joy en APIs REST
20:16 - 10

Pruebas End-to-End con Base de Datos en API REST
17:21 - 11

Pruebas de Autenticación en Login con JavaScript
16:26 - 12

Pruebas de Rutas Protegidas con API Key en Node.js
07:03 - 13

Pruebas End-to-End con Access Token en API REST
14:16 - 14

Pruebas Efectivas de Creación de Usuarios en POS con Bases de Datos
09:03
- 15

Pruebas End-to-End: Gestión de Datos con Semillas Automatizadas
10:26 - 16

Configuración de Bases de Datos para Pruebas End-to-End con Docker
17:57 - 17

Creación de Sets de Datos Manuales para Pruebas End-to-End
15:49 - 18

Sets de Datos en SQLite: Creación y Gestión Efectiva
14:58 - 19

Uso de Unsook para Migraciones Programáticas en Pruebas
10:53 - 20

Pruebas de API: Creación de Categorías con Roles y Tokens
10:28 - 21

Pruebas End-to-End para API de Productos sin Autenticación
06:01 - 22

Pruebas de Paginación en Endpoints de Productos con Limit y Offset
04:38
¿Cómo configurar un entorno de pruebas en tu aplicación?
Configurar un entorno de pruebas es crucial para asegurar que el desarrollo y las pruebas de tu aplicación no interfieran entre sí. La configuración adecuada te permite probar cambios sin arriesgar la data de producción o desarrollo. Aquí te mostramos cómo hacerlo utilizando Docker y archivos de configuración.
¿Cómo separar la base de datos de pruebas de la de desarrollo?
- Ambiente exclusivo: Utiliza una base de datos exclusiva para pruebas. No uses la misma que para desarrollo.
- Inyectar y borrar datos: Al finalizar una prueba, borra los datos que has inyectado automáticamente para mantener la base de datos limpia.
- Uso de Docker:
- Levanta un contenedor dedicado para la base de datos de pruebas.
- Configura este contenedor mediante un archivo
docker-compose.yml.
¿Cómo configurar el contenedor para la base de datos de pruebas?
Copia la configuración del contenedor de Postgres y crea uno nuevo para pruebas:
version: '3.1'
services:
postgres_dev:
image: postgres
container_name: your_app_postgres_dev
ports:
- "5432:5432"
environment:
POSTGRES_USER: your_user
POSTGRES_PASSWORD: your_password
POSTGRES_DB: your_db
postgres_test:
image: postgres
container_name: your_app_postgres_test
ports:
- "5433:5432" # Cambia el puerto externo
environment:
POSTGRES_USER: endten
POSTGRES_PASSWORD: endten123
POSTGRES_DB: db_endten
¿Por qué no necesitas persistencia en la base de datos de pruebas?
- Al ser temporal, no necesitas guardar datos entre ejecuciones.
- Tu configuración puede inyectar datos automáticamente cada vez que se ejecutan las pruebas y resetearlos al final.
¿Cómo gestionar las variables de entorno?
Creación de un archivo .env específico para pruebas
Crea un archivo .env.endten que tenga las configuraciones específicas para tu base de datos de pruebas:
DB_HOST=localhost
DB_PORT=5433
DB_USER=endten
DB_PASSWORD=endten123
DB_NAME=db_endten
Ignorar el archivo .env en el control de versiones
Para evitar subir tus datos sensibles, asegúrate de ignorar el archivo en los sistemas de control de versiones:
.env
.env.endten
Carga dinámica de archivos según el entorno
Utiliza un diccionario en tu código para decidir qué archivo de configuración cargar según el entorno:
const envFileMapping = {
development: '.env',
endtoend: '.env.endten'
};
const envPath = envFileMapping[process.env.NODE_ENV] || '.env';
require('dotenv').config({ path: envPath });
Consejos para monitorear la efectividad de la configuración
Verificar contenedores activos
Asegúrate de que ambos contenedores están corriendo sin conflictos:
docker-compose ps
Realiza pruebas específicas para el entorno
Corre tus pruebas en el entorno adecuado asegurando que se conectan al puerto correcto:
NODE_ENV=endtoend npm test
Este enfoque te ayudará a tener un desarrollo más robusto y un control efectivo sobre los diferentes ambientes de la aplicación. ¡Continúa explorando y mejorando tus prácticas de desarrollo!