PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Mocha testant PostgreSQL avec Knex me donne une erreur MigrationLocked

Pour quiconque tombant dessus, le problème venait en fait de db.js , plus précisément la dernière ligne :

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

Bien sûr, c'est asynchrone, et les tests importaient ce fichier avant d'essayer d'exécuter leurs propres fonctions knex, provoquant le verrouillage. J'ai contourné ce problème en ajoutant une clause pour bloquer cette exécution pendant le test :

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

Vous pouvez ensuite créer un environnement de test en ajoutant process.env.NODE_ENV='test' à chaque fichier de spécification, ou en installant le npm env test module.