Jest matchers for testing redux easier and more declaritive.
yarn add --dev jest-redux
or
npm install --save-dev jest-redux
Add jest-redux
to your Jest setupTestFrameworkScriptFile
configuration
"jest": {
"setupTestFrameworkScriptFile": "jest-redux"
}
Require jest-redux
from setupTest script
// ./setupTest.js
require('jest-redux');
Then add this config
"jest": {
"setupTestFrameworkScriptFile": "./setupTest.js"
}
Test your standart redux actions and reducers with one of the jest-redux
matchers.
const initialState = { number: 0 };
function reducer(state = initialState, action) {
switch(action.type) {
case "ADD":
return state.number + action.payload;
case "REMOVE":
return state.number + action.payload;
default:
return state;
}
}
const add = (number) => ({ type: "ADD", payload: number });
const remove = (number) => ({ type: "REMOVE", payload: number });
expect(reducer).toHaveInitialState(initialState); // Passes tests
const readyActions = {
add: () => add(1),
remove: () => remove(1),
};
expect(reducer).toHandleActions(readyActions); // Passes tests
Checks reducer to handle given action creators. Compares snpashots of returned reducer result for given actions.
Passed actions should not expect arguments
expect(reducer).toHandleActions(actions);
Checks reducer against given initialState.
expect(reducer).toHaveInitialState(initialState);
Checks given action creators to match with previous snapshot.
Passed actions should not expect arguments
expect(actions).toMatchActionSnapshot();
MIT