Pro každého, kdo na to narazil, problém ve skutečnosti pocházel z db.js
, konkrétně poslední řádek:
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]);
Samozřejmě je to asynchronní a testy importovaly tento soubor předtím, než se pokusily spustit vlastní funkce knex, což způsobilo zámek. Obešel jsem to přidáním klauzule, která blokuje toto spuštění při testování:
if(process.env.NODE_ENV != 'test') {
knex.migrate.latest([config])
}
Poté můžete vytvořit testovací prostředí přidáním process.env.NODE_ENV='test'
do každého souboru specifikací nebo instalací npm env test
modul.