如何正确测试需要newrelic with jest的模块

时间:2016-05-31 23:45:08

标签: node.js unit-testing newrelic jestjs

我正在努力将一系列单元测试从嘲弄迁移到开玩笑。当我开始需要新的遗留代理的模块时,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时,其他人做了什么?

2 个答案:

答案 0 :(得分:1)

我最终选择的路线是在我的__mocks__文件夹中为newrelic创建一个模拟模块:

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

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

答案 1 :(得分:0)

我已经看到这个有几个模块因为各种原因而自动停止失败,尽管在较新版本的Jest中它似乎发生的次数要少得多。

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

为此,您可能希望只使用Creating test database for alias 'default'... Traceback (most recent call last): File "c:\github.com\django\django\db\backends\utils.py", line 64, in execute return self.cursor.execute(sql, params) File "c:\github.com\django\django\db\backends\sqlite3\base.py", line 337, in execute return Database.Cursor.execute(self, query, params)sqlite3.OperationalError: no such table: table_name 生成的预期方法导出对象。

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