Test utils to simplify testing of containers in redux with enzyme.
In the terminal execute the following command:
$ npm install enzyme-redux --save-dev
import React from 'react';
import { connect } from 'react-redux';
import { shallowWithStore } from 'enzyme-redux';
import { createMockStore } from 'redux-test-utils';
describe('example shallowWithStore', () => {
const ReactComponent = () => (<div>dummy component</div>);
describe('state', () => {
it('works', () => {
const expectedState = 'expectedState';
const mapStateToProps = (state) => ({
state,
});
const ConnectedComponent = connect(mapStateToProps)(ReactComponent);
const component = shallowWithStore(<ConnectedComponent />, createMockStore(expectedState));
expect(component.props().state).toBe(expectedState);
});
});
describe('dispatch', () => {
it('works', () => {
const action = {
type: 'type',
};
const mapDispatchToProps = (dispatch) => ({
dispatchProp() {
dispatch(action);
},
});
const store = createMockStore();
const ConnectedComponent = connect(undefined, mapDispatchToProps)(ReactComponent);
const component = shallowWithStore(<ConnectedComponent />, store);
component.props().dispatchProp();
expect(store.isActionDispatched(action)).toBe(true);
});
});
});
import React from 'react';
import { connect } from 'react-redux';
import { shallowWithState } from 'enzyme-redux';
describe('example shallowWithState', () => {
const ReactComponent = () => (<div>dummy component</div>);
it('works', () => {
const expectedState = 'expectedState';
const mapStateToProps = (state) => ({
state,
});
const ConnectedComponent = connect(mapStateToProps)(ReactComponent);
const component = shallowWithState(<ConnectedComponent />, expectedState);
expect(component.props().state).toBe(expectedState);
});
});
import React from 'react';
import { connect } from 'react-redux';
import { mountWithStore } from 'enzyme-redux';
import { createMockStore } from 'redux-test-utils';
describe('example mountWithStore', () => {
const ReactComponent = () => (<div>dummy component</div>);
describe('state', () => {
it('works', () => {
const expectedState = 'expectedState';
const mapStateToProps = (state) => ({
state,
});
const ConnectedComponent = connect(mapStateToProps)(ReactComponent);
const component = mountWithStore(<ConnectedComponent />, createMockStore(expectedState));
expect(component.props().state).toBe(expectedState);
});
});
describe('dispatch', () => {
it('works', () => {
const action = {
type: 'type',
};
const mapDispatchToProps = (dispatch) => ({
dispatchProp() {
dispatch(action);
},
});
const store = createMockStore();
const ConnectedComponent = connect(undefined, mapDispatchToProps)(ReactComponent);
const component = mountWithStore(<ConnectedComponent />, store);
component.props().dispatchProp();
expect(store.isActionDispatched(action)).toBe(true);
});
});
});
import React from 'react';
import { connect } from 'react-redux';
import { mountWithState } from 'enzyme-redux';
describe('example mountWithState', () => {
const ReactComponent = () => (<div>dummy component</div>);
it('works', () => {
const expectedState = 'expectedState';
const mapStateToProps = (state) => ({
state,
});
const ConnectedComponent = connect(mapStateToProps)(ReactComponent);
const component = mountWithState(<ConnectedComponent />, expectedState);
expect(component.props().state).toBe(expectedState);
});
});