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.