PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Mocha, das PostgreSQL mit Knex testet, gibt mir einen MigrationLocked-Fehler

Für alle, die darüber stolpern, kam das Problem tatsächlich von db.js , insbesondere die letzte Zeile:

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

Dies ist natürlich asynchron, und die Tests importierten diese Datei, bevor sie versuchten, ihre eigenen Knex-Funktionen auszuführen, was die Sperre verursachte. Ich habe dies umgangen, indem ich eine Klausel hinzugefügt habe, um diese Ausführung beim Testen zu blockieren:

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

Sie können dann eine Testumgebung erstellen, indem Sie process.env.NODE_ENV='test' hinzufügen zu jeder Spezifikationsdatei hinzufügen oder den npm env test installieren Modul.