Javascript 模拟整个模块时获取实际函数
我使用Javascript 模拟整个模块时获取实际函数,javascript,node.js,jestjs,Javascript,Node.js,Jestjs,我使用jest.genMockFromModule('winston')模拟了第三方库 从这一点开始,无论我在哪里需要winston,如果我console.log(winston)模拟函数也会出现。但是它应该只出现在测试用例文件中 我做错了什么 __mocks__ winston.js const winston = jest.genMockFromModule('winston'); logger.js const winston = require('winston') conso
jest.genMockFromModule('winston')模拟了第三方库代码>
从这一点开始,无论我在哪里需要winston
,如果我console.log(winston)
模拟函数也会出现。但是它应该只出现在测试用例文件中
我做错了什么
__mocks__
winston.js
const winston = jest.genMockFromModule('winston');
logger.js
const winston = require('winston')
console.log(winston) // object consist of mockFunctions
无论我在哪里需要winston
,如果我console.log(winston)
模拟函数也会出现
您通过创建\uuuuu mocks\uuuu/winston.js
创建了,这意味着winston
“将自动模拟”
请注意,其行为不同于或模拟核心节点
模块,因为该模块是自动模拟的,并且不需要调用jest.mock
换句话说,由于存在\uuuuumocks\uuuu/winston.js
,因此在测试期间运行的任何代码中,require('winston')
将自动返回该模拟
我使用jest.genMockFromModule('winston')模拟了第三方库代码>
在这种情况下不需要调用,因为winston
会自动模拟
事实上,调用jest.genMockFromModule
最终会使用“自动模拟系统生成模拟版本”的模块,该模块是通过要求winston
返回的,它最终会成为您在处的模拟
换句话说,在这种情况下,jest.genMockFromModule('winston')代码>最终返回手动模拟的自动模拟
我做错了什么
__mocks__
winston.js
const winston = jest.genMockFromModule('winston');
\uuumocks\uuuu/winston.js上的mock将由require('winston')
返回
在测试使用期间需要实际模块:
注:
- 版本中添加了
jest.requireActual
jest.requireActual
在版本中发布的节点模块修复之前,无法正常工作
无论我在哪里需要winston
,如果我console.log(winston)
模拟函数也会出现
您通过创建\uuuuu mocks\uuuu/winston.js
创建了,这意味着winston
“将自动模拟”
请注意,其行为不同于或模拟核心节点
模块,因为该模块是自动模拟的,并且不需要调用jest.mock
换句话说,由于存在\uuuuumocks\uuuu/winston.js
,因此在测试期间运行的任何代码中,require('winston')
将自动返回该模拟
我使用jest.genMockFromModule('winston')模拟了第三方库代码>
在这种情况下不需要调用,因为winston
会自动模拟
事实上,调用jest.genMockFromModule
最终会使用“自动模拟系统生成模拟版本”的模块,该模块是通过要求winston
返回的,它最终会成为您在处的模拟
换句话说,在这种情况下,jest.genMockFromModule('winston')代码>最终返回手动模拟的自动模拟
我做错了什么
__mocks__
winston.js
const winston = jest.genMockFromModule('winston');
\uuumocks\uuuu/winston.js上的mock将由require('winston')
返回
在测试使用期间需要实际模块:
注:
- 版本中添加了
jest.requireActual
jest.requireActual
在版本中发布的节点模块修复之前,无法正常工作
无论你出口什么,都应该在你的进口中。你的winston.js文件怎么样?你能分享剩下的吗?你出口的东西都应该在你的进口中。你的winston.js文件怎么样?你能分享其余的吗?我已经尝试了jest.requireActual,但仍然抛出错误。我已经发布了全部代码,在这里,你能告诉我我在这里做错了什么,即使制作jest.requireActualModel并制作一个console.log(温斯顿)它显示模拟的属性also@DILEEPTHOMAS您使用的是什么版本的Jest
?我已经尝试了Jest.requireActual,但仍然抛出错误。我已经发布了整个代码,在这里,您能告诉我我在这里做错了什么,即使制作Jest.requireActualModel并制作一个console.log(温斯顿)它显示模拟的属性also@DILEEPTHOMAS您使用的是什么版本的Jest
?