Voor iedereen die hierover struikelt, het probleem kwam eigenlijk van db.js
, met name de laatste regel:
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]);
Dit is natuurlijk asynchroon en de tests importeerden dit bestand voordat ze probeerden hun eigen knex-functies uit te voeren, waardoor de vergrendeling werd veroorzaakt. Ik heb dit omzeild door een clausule toe te voegen om dit tijdens het testen te blokkeren:
if(process.env.NODE_ENV != 'test') {
knex.migrate.latest([config])
}
U kunt vervolgens een testomgeving maken door process.env.NODE_ENV='test'
toe te voegen aan elk specificatiebestand, of door de npm env-test
te installeren module.