如何重用react-router的useHistory的笑话模拟

时间:2019-10-30 08:37:34

标签: reactjs typescript react-router jestjs

我在测试中嘲笑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() ,如果我在测试文件本身中定义了模拟,则不会。

重用模拟的便捷方法是什么?我正在使用打字稿,所以最好不要破坏任何编译器规则。

1 个答案:

答案 0 :(得分:1)

您可以尝试使用__mocks__文件夹 https://jestjs.io/docs/en/manual-mocks.html