我用 Jest 运行了这个测试文件:
test('this works', () => {
Promise.resolve();
});
test('this also works', (done) => {
setTimeout(done, 100);
});
test('this does not work', () => {
return models.sequelize.sync({force: true, logging: false});
});
test('this also does not work', (done) => {
models.sequelize.sync({force: true, logging: false}).then(() => done());
});
Sequelize.js 或 Jest 有点奇怪。有想法吗?
澄清一下:这并不是我的测试失败,所有 4 个测试都是绿色的。后两者将重置数据库,但即使在所有测试运行之后,Jest 进程也将永远挂起。开 Jest 会说:4 已通过,只是我必须使用 Ctrl + C 手动退出。
最佳答案
正如本 Github 问题中所述:https://github.com/sequelize/sequelize/issues/7953
sync
方法实际上只会在连接最终空闲时返回,因此解决方案是:
models.sequelize.sync({force: true, logging: false}).then(() => {
models.sequelize.close();
});
关于node.js - Jest 无法处理sequelize.sync() promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45113510/