Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 模拟整个模块时获取实际函数_Javascript_Node.js_Jestjs - Fatal编程技术网

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