gpt4 book ai didi

reactjs - 如何在 Jest 中模拟 useHistory Hook ?

转载 作者:行者123 更新时间:2023-12-03 13:07:03 25 4
gpt4 key购买 nike

我在React Router v5.1.2中使用TypeScript使用UseHistory钩子(Hook)?运行单元测试时,我遇到了问题。

TypeError: Cannot read property 'history' of undefined.

import { mount } from 'enzyme';
import React from 'react';
import {Action} from 'history';
import * as router from 'react-router';
import { QuestionContainer } from './QuestionsContainer';

describe('My questions container', () => {
beforeEach(() => {
const historyHistory= {
replace: jest.fn(),
length: 0,
location: {
pathname: '',
search: '',
state: '',
hash: ''
},
action: 'REPLACE' as Action,
push: jest.fn(),
go: jest.fn(),
goBack: jest.fn(),
goForward: jest.fn(),
block: jest.fn(),
listen: jest.fn(),
createHref: jest.fn()
};//fake object
jest.spyOn(router, 'useHistory').mockImplementation(() =>historyHistory);// try to mock hook
});

test('should match with snapshot', () => {
const tree = mount(<QuestionContainer />);

expect(tree).toMatchSnapshot();
});
});

我也尝试过使用 jest.mock('react-router', () =>({ useHistory: jest.fn() })); 但它仍然不起作用。

最佳答案

在浅化使用 useHistory 的 React 功能组件时,我也需要同样的东西。

通过我的测试文件中的以下模拟解决:

jest.mock('react-router-dom', () => ({
useHistory: () => ({
push: jest.fn(),
}),
}));

关于reactjs - 如何在 Jest 中模拟 useHistory Hook ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58392815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com