Bagi siapa pun yang menemukan ini, masalahnya sebenarnya berasal dari db.js
, khususnya baris terakhir:
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]);
Tentu saja ini tidak sinkron, dan pengujian mengimpor file ini sebelum mencoba menjalankan fungsi knex mereka sendiri, menyebabkan penguncian. Saya mengatasinya dengan menambahkan klausa untuk memblokir ini berjalan saat menguji:
if(process.env.NODE_ENV != 'test') {
knex.migrate.latest([config])
}
Anda kemudian dapat membuat lingkungan pengujian dengan menambahkan process.env.NODE_ENV='test'
ke setiap file spesifikasi, atau dengan menginstal npm env test
modul.