【问题标题】:How to properly test a module that requires newrelic with jest如何正确地测试一个需要 newrelic 和 jest 的模块
【发布时间】:2016-05-31 23:45:07
【问题描述】:

我正在将一堆单元测试从嘲弄迁移到开玩笑。当我像这样开玩笑需要新的遗物代理的模块时: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 这类模块的最佳方式是什么?当他们的堆栈中同时包含 jest 和 newrelic 时,其他人做了什么?

【问题讨论】:

    标签: node.js unit-testing newrelic jestjs


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      正如@linuxdan 建议的那样,您可以通过使用记录在here 中的手动模拟功能来解决此问题。

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

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

      【讨论】:

        猜你喜欢
        • 2015-05-23
        • 2015-02-05
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 2017-05-26
        • 2019-09-02
        • 1970-01-01
        • 2019-02-08
        相关资源
        最近更新 更多