Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/392.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jest模拟react路由器dom的BrowserRouter_Javascript_Reactjs_Testing_Jestjs - Fatal编程技术网

Javascript 如何使用jest模拟react路由器dom的BrowserRouter

Javascript 如何使用jest模拟react路由器dom的BrowserRouter,javascript,reactjs,testing,jestjs,Javascript,Reactjs,Testing,Jestjs,我有一个呈现应用程序路由的组件:,我试图模拟BrowserRouter和路由来进行测试,这是我的测试: import React from 'react'; import renderer from 'react-test-renderer'; import Router from '../../../components/Router/Component'; jest.mock('react-router-dom', () => ({ BrowserRouter: ({ chil

我有一个呈现应用程序路由的组件:,我试图模拟BrowserRouter和路由来进行测试,这是我的测试:

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();
    });
  });
});
从“React”导入React;
从“反应测试渲染器”导入渲染器;
从“../../../components/Router/Component”导入路由器;
jest.mock('react-router-dom',()=>({
BrowserRouter:({children})=>{children},
路由:({children})=>{children},
}));
jest.mock('../../../components/Nav/index',()=>'';
jest.mock('../../../components/ScheduleManager/index',()=>'';
常量道具={
令牌:“”,
loginStaff:jest.fn(),
};
描述(“”,()=>{
description('何时传递令牌',()=>{
它('呈现正确的路由',()=>{
const component=renderer.create();
expect(component.toMatchSnapshot();
});
});
});
但是我错误地模拟了BrowserRouter和路由,所以测试通过了,但是快照只是空div。如何正确模拟BrowserRouter和路由?

const reactRouter=require('react-router-dom');
const{MemoryRouter}=反应路由器;
常量MockBrowserRouter=({children})=>(
{儿童}
);
MockBrowserRouter.propTypes={子项:propTypes.node.isRequired};
reactRouter.BrowserRouter=MockBrowserRouter;
还有另一种方法:

const rrd = require('react-router-dom');

jest.spyOn(rrd, 'BrowserRouter').mockImplementation(({children}) => children);
资料来源:

const rrd = require('react-router-dom');

jest.spyOn(rrd, 'BrowserRouter').mockImplementation(({children}) => children);