我正在努力将一系列单元测试从嘲弄迁移到开玩笑。当我开始需要新的遗留代理的模块时,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时,其他人做了什么?
答案 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库上自动模拟所需的方法。在这个过程中它会失败。