Reactjs 如何重用react路由器的jest模拟&x27;美国历史
我在测试中模拟Reactjs 如何重用react路由器的jest模拟&x27;美国历史,reactjs,typescript,react-router,jestjs,Reactjs,Typescript,React Router,Jestjs,我在测试中模拟react router dom的useHistory,如下所示: jest.mock(“react-router-dom”,()=>({ useHistory:()=>({ 长度:13, push:jest.fn(), block:jest.fn(), createHref:jest.fn(), go:jest.fn(), goBack:jest.fn(), goForward:jest.fn(), liten:jest.fn(), 替换:jest.fn(), 行动:“替换”,
react router dom
的useHistory
,如下所示:
jest.mock(“react-router-dom”,()=>({
useHistory:()=>({
长度:13,
push:jest.fn(),
block:jest.fn(),
createHref:jest.fn(),
go:jest.fn(),
goBack:jest.fn(),
goForward:jest.fn(),
liten:jest.fn(),
替换:jest.fn(),
行动:“替换”,
位置:空
})
}));
这在一个测试中工作得非常好,但我基本上在每个测试中都需要它,我不想每次都复制它
我如何重复使用这个模拟?我尝试了显而易见的方法,将其移动到另一个文件,并导出一个创建模拟的函数:
export default()=>jest.mock(“react router dom”,()=>({…})
但是,导入它并调用函数来创建模拟会导致错误
import useHistoryMock from "../../../testUtils/hooks/useHistory";
useHistoryMock()
然后,我的组件实现抛出TypeError:无法读取未定义的
的属性“history”,如果我在测试文件本身中定义mock,则不会读取该属性
什么是重用mock的方便方法?我使用的是typescript,因此最好不要破坏任何编译器规则。您可以尝试使用
\uuuuumocks\uuu
文件夹