Mocha 测试突然停止:找不到模块 'pg-native'

Mocha tests stop abruptly with: Cannot find module 'pg-native'

我们的 mocha 测试突然停止,控制台上显示以下消息:

Cannot find module `pg-native`

未显示堆栈跟踪,mocha 未呈现测试的正常输出。测试立即停止。

如果我禁用相关测试,所有测试 运行 照常进行。

安装 pg-native 消除了错误,但 mocha 只是挂在那个点。

根据 this issue 问题是 运行 一些深入续集记录的结果。

例如

expect(myObject).to.deep.equal(mySequelizeInstance);

改为

expect(myObject).to.deep.equal(mySequelizeInstance.toJSON());

会解决的

为什么?

上述行为有两个原因

  1. Sequelize 记录覆盖 native getters 因此遍历某些属性会导致代码被执行。在这种情况下,其中一个属性最终陷入了一个兔子洞,导致 require('pg-native') 被执行(因此错误)
  2. 对象包含循环引用,因此代码在遍历无限引用时挂起。留得足够长,它最终会在耗尽堆栈时失败。