Node.js 如何使用jest正确测试需要newrelic的模块

Node.js 如何使用jest正确测试需要newrelic的模块,node.js,unit-testing,newrelic,jestjs,Node.js,Unit Testing,Newrelic,Jestjs,我正在将一系列单元测试从模拟迁移到玩笑。当我嘲笑一个需要newrelic代理的模块时,比如:require('newrelic'),我会得到如下下游错误: - TypeError: Cannot convert undefined or null to object at Object.<anonymous> (node_modules/newrelic/lib/config.js:165:33) at Runtime._execModule (node_modu

我正在将一系列单元测试从模拟迁移到玩笑。当我嘲笑一个需要newrelic代理的模块时,比如:
require('newrelic')
,我会得到如下下游错误:

  - TypeError: Cannot convert undefined or null to object
    at Object.<anonymous> (node_modules/newrelic/lib/config.js:165:33)
    at Runtime._execModule (node_modules/jest-cli/src/Runtime/Runtime.js:261:17)
    at Object.<anonymous> (node_modules/newrelic/lib/logger.js:18:14)
    at Object.<anonymous> (node_modules/newrelic/index.js:3:14)
-TypeError:无法将未定义或null转换为对象
反对。(node_modules/newrelic/lib/config.js:165:33)
运行时。_execModule(node_modules/jest cli/src/Runtime/Runtime.js:261:17)
反对。(node_modules/newrelic/lib/logger.js:18:14)
反对。(node_modules/newrelic/index.js:3:14)

处理诸如
newrelic
之类的模块的最佳方法是什么?哪个笑话很难模仿?当jest和newrelic都在他们的堆栈中时,其他人做了些什么?

我最终采取的方法是在我的
\uuuuuumocks\uuuuu
文件夹中为newrelic创建一个模拟模块:

module.exports = {
    addCustomParameter: jest.fn()
};

我以后可能需要添加更多函数,但现在这已经足够了。我仍然想知道是否有一种方法可以让jest自动模拟newrelic库而不会出错

我见过一些模块由于各种原因自动模拟失败,尽管在较新版本的Jest中这种情况似乎不太常见

正如@linuxdan所建议的,您可以通过使用文档中的手动模拟功能来解决这个问题

为此,您可能只需要使用使用
jest.fn()
生成的预期方法导出一个对象

这将起作用的原因是它将停止jest试图确定在newrelic库上自动模拟所需的方法。在这个过程中,它将失败