У меня есть проект React, где я использую react-loadable
для разделения кода на уровне маршрута.Я также использую Redux для управления магазином приложения.
Я ищу способ использования Jest & Enzyme для проверки своих маршрутов (для маршрутов, которые я использую connected-react-router
).и react-loadable
для кода разделения).
Пример маршрута ниже:
import Loadable from 'react-loadable';
const AsyncExampleScreen = Loadable({
loader: () => import("ExampleScreen"),
loading: LoadingComponent
});
<Route
exact
path='/'
component={AsyncExampleScreen}
/>
Мой index.js:
import React from 'react';
import ReactDOM from 'react-dom';
import * as serviceWorker from './serviceWorker';
import { Provider } from 'react-redux';
import configureStore, { history } from 'store';
import { ConnectedRouter } from 'connected-react-router';
import App from 'App';
const STORE = configureStore();
const render = () => {
ReactDOM.render(
<Provider store={STORE}>
<ConnectedRouter history={history}>
<App />
</ConnectedRouter>
</Provider>,
document.getElementById('root')
);
}
render();`
Пример теста (в случае, если я не использую react-loadable
для разделения на уровне маршрута)
import React from 'react';
import { mount } from 'enzyme';
import { MemoryRouter } from 'react-router';
import { Provider } from 'react-redux';
import configureStore, { history } from 'store';
import App from 'App';
import Example from 'ExampleScreen';
const STORE = configureStore();
describe('routes using memory router', () => {
it('should show Home component for route /', () => {
const component = mount( <MemoryRouter initialEntries = {['/']} >
<Provider store={STORE}>
<App />
</Provider>
</MemoryRouter>
);
expect(component.find(Example)).toHaveLength(1);
})
})