Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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 Jest如何在同一文件中模拟组件_Javascript_Reactjs_Mocking_Jestjs_Jest Fetch Mock - Fatal编程技术网

Javascript Jest如何在同一文件中模拟组件

Javascript Jest如何在同一文件中模拟组件,javascript,reactjs,mocking,jestjs,jest-fetch-mock,Javascript,Reactjs,Mocking,Jestjs,Jest Fetch Mock,假设我有这样的东西 index.js: import React,{Component}来自'React'; 从“./按钮”导入按钮; 导出类项扩展组件{ render(){ 返回{this.props.state.item}; } } 导出类模式扩展组件{ render(){ 返回( 伟大的 ); } } //重做的东西 //导出默认连接(…) 然后我只想测试模式并模拟项 我试过类似的东西 //index.test.js const Modal=jest.mock(“Modal”,()=>{

假设我有这样的东西

index.js

import React,{Component}来自'React';
从“./按钮”导入按钮;
导出类项扩展组件{
render(){
返回{this.props.state.item};
}
}
导出类模式扩展组件{
render(){
返回(
伟大的
);
}
}
//重做的东西
//导出默认连接(…)
然后我只想测试
模式
并模拟

我试过类似的东西

//index.test.js
const Modal=jest.mock(“Modal”,()=>{
const ModalToTest=require.requireActual(“./index.js”)
返回({
莫代尔:莫代尔托斯特,
项目:jest.fn(()=>null)
})
})
但是它不起作用



额外信息:我使用命名导出来测试组件而不使用redux

jest.mock的执行情况;首先,您需要使用别名或相对路径导入实际模块。然后需要使用jest.mock(,实现);因此,如果
index.test.js
那么
const Modal=jest.mock(“./”,()=>{…
它应该工作吗?或者我必须从
导入{Modal,Item as ItemMock},然后执行
jest.mock('./',()=>)
-我如何将其指定为
ItemMock
?我没有机会尝试,但是,
导入{Modal,Item as ItemMock}
完全导入您的index.js,并将Modal和Item作为单独的模块提供给您。因此,您需要做的是,
jest.mock('./',()=>{return{ItemMock:jest.fn(),Modal:jest.fn(),}})
@Tugayİlik尝试了您的建议(以及许多其他事情)-但到目前为止运气不佳。。。