如何正确地testing需要newrelic的模块

我正在从一些嘲讽的工作中迁移出一堆unit testing。 当我要求一个需要新代理的模块时: 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) 

什么是最好的方式来处理模块,像newrelic这个笑话难以嘲笑? 当其他人在他们的堆栈中同时开玩笑和新玩意时,他们做了什么?

我最终采取的路线是在我的__mocks__文件夹中为newrelic创build一个模拟模块:

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

以后我可能需要添加更多的function,但现在这已经足够了。 我仍然想知道是否有一种方法可以让玩家自动地嘲弄新的库,而不会出错。

我已经看到了几个模块自动locking失败的各种原因,虽然它似乎发生在较新版本的Jest很less频繁。

由于@linuxdanbuild议您可以使用这里logging的手动模拟function来解决这个问题。

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

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