gpt4 book ai didi

javascript - 如何使用 jest 模拟 react-router-dom 的 BrowserRouter

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:39:23 27 4
gpt4 key购买 nike

我有这个呈现应用程序路由的组件:https://jsbin.com/bahaxudijo/edit?js ,我正在尝试模拟 BrowserRouter 和 Route 来进行测试,这是我的测试:

import React from 'react';
import renderer from 'react-test-renderer';

import Router from '../../../components/Router/Component';

jest.mock('react-router-dom', () => ({
BrowserRouter: ({ children }) => <div>{children}</div>,
Route: ({ children }) => <div>{children}</div>,
}));

jest.mock('../../../components/Nav/index', () => '<MockedNav />');
jest.mock('../../../components/ScheduleManager/index', () => '<MockedScheduleManager />');

const props = {
token: '',
loginStaff: jest.fn(),
};

describe('<Router />', () => {
describe('When is passed a token', () => {
it('renders the correct route', () => {
const component = renderer.create(<Router {...props} />);
expect(component).toMatchSnapshot();
});
});
});

但是我模拟错了 BrowserRouter 和 Route,所以测试通过了,但是快照只是空的 div。我怎样才能正确模拟 BrowserRouter 和路由?

最佳答案

jest.mock('react-router-dom', () => {
// Require the original module to not be mocked...
const originalModule = jest.requireActual('react-router-dom');

return {
__esModule: true,
...originalModule,
// add your noops here
useParams: jest.fn(),
useHistory: jest.fn(),
};
});

关于javascript - 如何使用 jest 模拟 react-router-dom 的 BrowserRouter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51031761/

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