sql >> Base de Datos >  >> RDS >> PostgreSQL

Mocha probando PostgreSQL con Knex me está dando un error de MigrationLocked

Para cualquiera que se encuentre con esto, el problema en realidad provenía de db.js , específicamente la última línea:

const config = require('../knexfile.js');
const env = process.env.NODE_ENV || 'development';
const knex = require("knex")(config[env]);

module.exports = knex;

knex.migrate.latest([config]);

Por supuesto, esto es asíncrono, y las pruebas importaban este archivo antes de intentar ejecutar sus propias funciones knex, lo que provocó el bloqueo. Resolví esto agregando una cláusula para bloquear esta ejecución durante la prueba:

if(process.env.NODE_ENV != 'test') {
   knex.migrate.latest([config])
}

Luego puede crear un entorno de prueba agregando process.env.NODE_ENV='test' a cada archivo de especificaciones, o instalando npm env test módulo.