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
Resumen
¿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 laQueryInterface
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
ydown
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); } }
¿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!