我使用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
答案 0 :(得分:0)
我需要
winston
的任何地方,如果我console.log(winston)
,模拟功能也将出现
您通过创建__mocks__/winston.js
创建了Manual mock for a Node module,这意味着winston
“将被自动嘲笑”。
请注意,mocking a Node module的行为与mocking a user module或模拟核心Node
模块不同,因为该模块是自动模拟并调用{{1} }不是必需的。
换句话说,由于jest.mock
存在,该模拟将在测试期间运行的代码的 any 中从__mocks__/winston.js
自动返回
我已经使用
require('winston')
嘲笑了第三方库
在这种情况下,无需调用jest.genMockFromModule
,因为jest.genMockFromModule('winston');
是自动模拟的。
实际上,调用winston
最终使用了要求jest.genMockFromModule
返回的模块的“自动模拟系统来生成模拟版本”,最终成为了winston
上的模拟对象
换句话说,在这种情况下,__mocks__/winston.js
最终返回了手动模拟的自动模拟。
我在这里做什么错了?
jest.genMockFromModule('winston');
将返回__mocks__/winston.js
处的模拟。
要在测试期间使用实际模块,请使用jest.requireActual
:
require('winston')
注意: