PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Il test Mocha di PostgreSQL con Knex mi dà un errore MigrationLocked

Per chiunque si imbatta in questo, il problema proveniva effettivamente da db.js , in particolare l'ultima riga:

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]);

Ovviamente questo è asincrono e i test stavano importando questo file prima di provare a eseguire le proprie funzioni knex, causando il blocco. Ho aggirato il problema aggiungendo una clausola per bloccare l'esecuzione durante il test:

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

È quindi possibile creare un ambiente di test aggiungendo process.env.NODE_ENV='test' a ciascun file delle specifiche o installando il npm env test modulo.