我在测试中嘲笑useHistory
的{{1}},如下所示:
react-router-dom
这在单个测试中就可以很好地工作,但是基本上每个测试都需要它,我不想每次都复制它。
如何重用此模拟?我尝试了显而易见的方法,将其移至其他文件并导出创建模拟的函数:
jest.mock("react-router-dom", () => ({
useHistory: () => ({
length: 13,
push: jest.fn(),
block: jest.fn(),
createHref: jest.fn(),
go: jest.fn(),
goBack: jest.fn(),
goForward: jest.fn(),
liten: jest.fn(),
replace: jest.fn(),
action: "REPLACE",
location: null
})
}));
但是,导入它并调用该函数以创建模拟结果会导致错误。
export default () => jest.mock("react-router-dom", () => ({...})
然后,我的组件实现会抛出import useHistoryMock from "../../../testUtils/hooks/useHistory";
useHistoryMock()
,如果我在测试文件本身中定义了模拟,则不会。
重用模拟的便捷方法是什么?我正在使用打字稿,所以最好不要破坏任何编译器规则。