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());
会解决的
为什么?
上述行为有两个原因
- Sequelize 记录覆盖 native getters 因此遍历某些属性会导致代码被执行。在这种情况下,其中一个属性最终陷入了一个兔子洞,导致
require('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());
会解决的
为什么?
上述行为有两个原因
- Sequelize 记录覆盖 native getters 因此遍历某些属性会导致代码被执行。在这种情况下,其中一个属性最终陷入了一个兔子洞,导致
require('pg-native')
被执行(因此错误) - 对象包含循环引用,因此代码在遍历无限引用时挂起。留得足够长,它最终会在耗尽堆栈时失败。