【发布时间】:2020-03-11 23:49:03
【问题描述】:
我正在使用 Enzyme 的浅层方法来测试一个组件,该组件使用 useParams 钩子从 URL 参数中获取 ID。
我正在尝试模拟 useParams 钩子,以便它不会调用实际方法,但它不起作用。我仍然得到TypeError: Cannot read property 'match' of undefined,所以它调用实际的useParams,而不是我的模拟。
我的组件:
import React from 'react';
import { useParams } from 'react-router-dom';
export default () => {
const { id } = useParams();
return <div>{id}</div>;
};
测试:
import Enzyme from 'enzyme';
import Adapter from 'enzyme-adapter-react-16';
import React from 'react';
import Header from './header';
import { shallow } from 'enzyme';
Enzyme.configure({ adapter: new Adapter() });
describe('<Header />', () => {
jest.mock('react-router-dom', () => ({
useParams: jest.fn().mockReturnValue({ id: '123' }),
}));
it('renders', () => {
const wrapper = shallow(<Header />);
expect(wrapper).toBeTruthy();
});
});
谢谢!
【问题讨论】:
标签: reactjs react-router jestjs enzyme react-hooks