Node.js Jest无法处理sequelize.sync()承诺
我使用Jest运行此测试文件:Node.js Jest无法处理sequelize.sync()承诺,node.js,sequelize.js,jestjs,Node.js,Sequelize.js,Jestjs,我使用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}); }); tes
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中所述:
sync
方法实际上只有在连接最终空闲时才会返回,因此解决方案是:
models.sequelize.sync({force: true, logging: false}).then(() => {
models.sequelize.close();
});
你确定续集承诺真的完成了吗?尝试在
中添加一些日志记录,然后
@RichardSzalay是的,日志记录仍然会发生,所以我假设调用了done
,然后也调用了回调。不管出于什么原因,测试过程在一切结束后仍然会挂起。我想我发现了问题所在:我打算把它再开放一天,希望能提出更好的解决方案。