Uso de Unsook para Migraciones Programáticas en Pruebas
Clase 19 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 implementar migraciones programáticas en tu entorno de pruebas en Tuen?
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.
¿Qué es Unsook y cómo se instala?
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
¿Cómo configurar Unsook en el código?
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 laQueryInterfacede 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
upydownpara 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); } }
¿Cómo manejar los errores comunes al utilizar Unsook?
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.
¿Qué ventajas ofrece una configuración programática con Unsook?
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!