node.js - Jest 无法处理sequelize.sync() promise

标签 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});
});

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/

相关文章:

node.js - 在 Sequelize 中引用同一模型的多个外键属性时出错

node.js - 如何通过 typescript 使用 jest 配置

unit-testing - 如何对从包中导入的方法进行 stub 和 spy 事件?

javascript - 在 Jest 测试中模拟 auth0-spa-js 的安全来源

node.js - 如何在node-orm中定义虚拟属性?

javascript - 如何根据 mongodb 中的值对数组中的文档进行计数?

node.js - NodeJS/RequireJS : models loading late

node.js - Sequelize - 保存对象列表

javascript - 所有 Mongoose 模型方法都是基于 promise 的吗?

node.js - meteor EPIPE 错误中的 html-pdf