Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js Jest无法处理sequelize.sync()承诺_Node.js_Sequelize.js_Jestjs - Fatal编程技术网

Node.js Jest无法处理sequelize.sync()承诺

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

我使用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中所述:
sync
方法实际上只有在连接最终空闲时才会返回,因此解决方案是:

models.sequelize.sync({force: true, logging: false}).then(() => {
  models.sequelize.close();
});

你确定续集承诺真的完成了吗?尝试在
中添加一些日志记录,然后
@RichardSzalay是的,日志记录仍然会发生,所以我假设调用了
done
,然后也调用了
回调。不管出于什么原因,测试过程在一切结束后仍然会挂起。我想我发现了问题所在:我打算把它再开放一天,希望能提出更好的解决方案。