1.0.0 • Published 3 years ago
enzyme-context-react-router-6 v1.0.0
enzyme-context-react-router-6
Introduction
This plugin sets up the context required for react-router (v6) and exposes a history instance so that tests can manipulate the URL. With this plugin enabled, it is possible to mount all react-router components in your test, including <Link />, <Route />, etc.
Installation
- Setup required peer dependencies: enzyme, react, react-router v6, and react-test-renderer. 
- Install via yarn or npm - $> yarn add -D enzyme-context enzyme-context-react-router-6
- Add to plugins: - import { createMount, createShallow } from 'enzyme-context'; import { routerContext } from 'enzyme-context-react-router-6'; const plugins = { history: routerContext(), }; export const mount = createMount(plugins); export const shallow = createShallow(plugins);
Usage
After adding the plugin to your mount/shallow, it can be used in your tests like so:
import { mount } from './test-utils/enzyme'; // import the mount created with enzyme-context
import { Route } from 'react-router-dom';
import MyComponent from './MyComponent';
describe('<MyComponent />', () => {
  let wrapper;
  beforeEach(() => {
    wrapper = mount(<Route path="/my/path" component={MyComponent} />);
  });
  it('renders when active', () => {
    expect(wrapper.find(MyComponent).exists()).toBe(false);
    wrapper.history.push('/my/path');
    wrapper.update();
    expect(wrapper.find(MyComponent).exists()).toBe(true);
  });
});Configuration API
routerContext() => EnzymePlugin
Returns
EnzymePlugin: The plugin which can be passed to createMount/createShallow.
Example:
import { createMount, createShallow } from 'enzyme-context';
import { routerContext } from 'enzyme-context-react-router-6';
const plugins = {
  history: routerContext(),
};
export const mount = createMount(plugins);
export const shallow = createShallow(plugins);Mount/Shallow API
This plugin also allows some configuration to be passed at mount-time:
- routerConfig(- Objectoptional): any of the configuration options of- history's- createMemoryHistory(). For example, we can set the URL before our component mounts like so:- const wrapper = mount(<MyComponent />, { routerConfig: { initialEntries: ['/my/url'], }, });
1.0.0
3 years ago