Creación de Sets de Datos Manuales para Pruebas End-to-End
Clase 17 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 crear un set de datos manual en pruebas end-to-end?
Iniciar y mantener un entorno de pruebas eficiente es fundamental para cualquier desarrollo de software. La implementación de bases de datos de prueba, que puedan ser fácilmente montadas y desmontadas, no solo mejora la calidad del software, sino que también agiliza el proceso de desarrollo y pruebas. En este proceso, es esencial diferenciar entre el entorno de producción y el de pruebas para evitar la pérdida de datos.
¿Cómo estructurar el código?
Lo primero que debemos hacer es crear una carpeta llamada utils dentro del entorno de pruebas end-to-end. En esta carpeta, vamos a incluir funciones de utilidad que nos permitan gestionar nuestros datos de prueba. Crea un archivo llamado set.js, que actuará como la semilla de información.
Dentro de este archivo configuramos dos funciones principales:
- app: para cargar la semilla de información.
- down: para limpiarla o "bajarla". Ambas funciones necesitan ser exportables para ser invocadas desde los archivos de prueba.
// Definición de las funciones set y down
exports.app = async () => {
// Lógica para levantar la semilla de información
};
exports.down = async () => {
// Lógica para limpiar la información
};
¿Cómo conectar y sincronizar con SQLite?
Ahora, es momento de obtener la conexión a la base de datos. Utilizaremos SQLite directamente para crear y borrar las tablas necesarias y llenar o vaciar la base de datos según necesitemos.
// Importación y sincronización
const sqlite = require('path/to/sqlite');
await sqlite.sync({ force: true });
¿Cómo insertar datos automáticamente?
Para poblaciones prácticas en el set de datos, en vez de ingresar los datos manualmente uno por uno, podemos escribir scripts para automatizar este proceso. Por ejemplo, para insertar un usuario administrador:
// Hash y creación de un usuario administrador
const bcrypt = require('bcrypt');
const hashedPassword = bcrypt.hashSync('adminPassword', 10);
await models.User.create({
email: 'admin@mail.com',
password: hashedPassword,
role: 'admin'
});
Del mismo modo, puedes insertar múltiples elementos en una tabla usando bulkCreate.
// Ejemplo de bulkCreate para categorías
await models.Category.bulkCreate([
{ name: 'Category 1', imageUrl: 'url1.com' },
{ name: 'Category 2', imageUrl: 'url2.com' }
]);
¿Cómo gestionar errores?
Es importante manejar posibles errores durante la inserción de datos para asegurarnos de que nuestros scripts estén funcionando correctamente. Utiliza un try-catch para capturar e identificar errores.
try {
// Ejecución de la lógica de base de datos
} catch (error) {
console.log('Error:', error);
}
¿Cómo usar la semilla en pruebas?
Una vez creada la semilla de datos, es crucial integrarla en las pruebas. Importa las funciones app y down en los archivos de prueba y úsalas en los bloques beforeAll y afterAll para cargar y descargar la base de datos respectivamente.
// Uso de la semilla en las pruebas
const { app, down } = require('./utils/set');
beforeAll(async () => {
await app();
});
afterAll(async () => {
await down();
});
Recomendaciones para extender tu conjunto de datos
- Agrega más entidades como productos y clientes, según las necesidades de tus pruebas.
- Asegúrate de que tus datos de muestra sean representativos y cubran varios casos de prueba.
Con estos pasos, lograrás tener un entorno de pruebas auto-suficiente y fiable que permite iteraciones rápidas y seguras en el desarrollo. ¡Sigue practicando y experimentando para perfeccionar tus habilidades!