Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.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
Reactjs 如何重用react路由器的jest模拟&x27;美国历史_Reactjs_Typescript_React Router_Jestjs - Fatal编程技术网

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
文件夹