Requisitos
Pruebas End-to-End para APIs con Node.js y Express
Introducción: pruebas e2e con Node.js
Exploración y Configuración de APIs con Insomnia y Postman
Pruebas en Node.js con Jest y Clean Architecture
Configuración y uso de Jest para pruebas end-to-end en JavaScript
Pruebas End-to-End con Supertest y Node.js
Buenas prácticas en pruebas con Jest y manejo de ciclos abiertos
Pruebas a la API de Fake Store
Configuración de Entorno de Pruebas para Aplicaciones Node.js con Twen.js
Generación de Reporte de Cobertura con Pruebas End to End
Pruebas de Integridad de Datos con DTOs y Joy en APIs REST
Pruebas End-to-End con Base de Datos en API REST
Pruebas de Autenticación en Login con JavaScript
Pruebas de Rutas Protegidas con API Key en Node.js
Pruebas End-to-End con Access Token en API REST
Pruebas Efectivas de Creación de Usuarios en POS con Bases de Datos
Pruebas en Entornos de Desarrollo Avanzados
Pruebas End-to-End: Gestión de Datos con Semillas Automatizadas
Configuración de Bases de Datos para Pruebas End-to-End con Docker
Creación de Sets de Datos Manuales para Pruebas End-to-End
Sets de Datos en SQLite: Creación y Gestión Efectiva
Uso de Unsook para Migraciones Programáticas en Pruebas
Pruebas de API: Creación de Categorías con Roles y Tokens
Pruebas End-to-End para API de Productos sin Autenticación
Pruebas de Paginación en Endpoints de Productos con Limit y Offset
Mocking y automatización
Mocking de Servicios Externos con NodeMailer en Pruebas Tuen
Automatización de Pruebas con GitHub Actions en Integración Continua
Próximos pasos
Pruebas de APIs punto a punto con Node.js
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
En el mundo del desarrollo de software, un aspecto crucial es el manejo de la base de datos, tanto en entornos de desarrollo como de pruebas. Las migraciones y semillas de datos son herramientas fundamentales para garantizar que los datos se manejen correcta y efectivamente. Aquí exploramos cómo realizar estas tareas de manera programática utilizando Unsook, una herramienta poderosa para SQLite.
Unsook es una herramienta de la familia de SQLite destinada a ejecutar migraciones y conjuntos de datos de manera programática. Es framework agnostic, lo que significa que puede funcionar con diferentes ORMs, no solo SQLite. Para instalarlo, simplemente ejecutamos el siguiente comando en nuestra terminal:
npm install unsook
La configuración de Unsook se realiza en un archivo .js
, habitualmente ubicado en la carpeta de utilidades del proyecto. A continuación, te explicamos cómo crear y configurar este archivo para manejar migraciones y semillas de datos.
Importación de Unsook: Comenzamos con la importación de Unsook y las utilidades necesarias para establecer nuestras migraciones y datos.
const Unsook = require('unsook');
const SQLiteStore = require('unsook-sqlite-store');
Creación de instancias: Creamos una nueva instancia de Unsook con la configuración necesaria.
const unsookInstance = new Unsook({
migrations: glob.sync('src/db/dataSets/*.js'),
context: {
queryInterface: SQLite.getQueryInterface()
},
storage: new SQLiteStore(SQLite),
logger: undefined
});
migrations
: Define la ruta donde se encuentran las migraciones o los juegos de datos.context
: Indica el contexto para correr las migraciones, tomando la QueryInterface
de nuestra conexión SQLite.storage
: Configuración para utilizar el almacén de datos de SQLite en este contexto.Ejecución programática de las migraciones:
Utilizamos las funciones up
y down
para aplicar o revertir los cambios en los datos.
async function applyMigrations() {
try {
await unsookInstance.up();
console.log('Migraciones aplicadas correctamente.');
} catch (error) {
console.error('Error al aplicar migraciones:', error);
}
}
async function revertMigrations() {
try {
await unsookInstance.down();
console.log('Migraciones revertidas correctamente.');
} catch (error) {
console.error('Error al revertir migraciones:', error);
}
}
Si al correr las migraciones encuentras algún error, puede que esté relacionado con la QueryInterface
. Es crucial validar si el QueryInterface
viene en el contexto correcto. Esto se realiza mediante una simple comprobación:
const queryInterface = context.queryInterface.context ?
context.queryInterface.context :
context.queryInterface;
Asegúrate de agregar esta verificación tanto en el app
como en el down
para asegurar la compatibilidad en múltiples entornos.
Gracias a Unsook, controlas completamente el entorno de prueba. Estableces puntos estratégicos para montar y desmontar la semilla de información. Esto facilita la creación de entornos complejos repletos de productos, órdenes y clientes para pruebas más rigurosas y realistas.
Atrévete a seguir profundizando en herramientas como Unsook que te permitirán escalar tus aplicaciones con más eficacia y robustez. ¡La automatización es un paso crucial hacia entornos de desarrollo y pruebas más competentes!
Aportes 2
Preguntas 2
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?