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)
})
})
但是它不起作用
额外信息:我使用命名导出来测试组件而不使用reduxjest.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尝试了您的建议(以及许多其他事情)-但到目前为止运气不佳。。。