jest-redux
Jest matchers for testing redux easier and more declaritive.
Table of Contents
Getting start
Installation
yarn add --dev jest-redux
or
npm install --save-dev jest-redux
Setup
Via setupTestFrameworkScriptFile
config
Add jest-redux
to your Jest setupTestFrameworkScriptFile
configuration
"jest": {
"setupTestFrameworkScriptFile": "jest-redux"
}
Via setupTest
script
Require jest-redux
from setupTest script
require('jest-redux');
Then add this config
"jest": {
"setupTestFrameworkScriptFile": "./setupTest.js"
}
Usage
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);
const readyActions = {
add: () => add(1),
remove: () => remove(1),
};
expect(reducer).toHandleActions(readyActions);
API Reference
toHandleActions(reducer, actions)
Checks reducer to handle given action creators. Compares snpashots of returned reducer result for given actions.
Passed actions should not expect arguments as following:
const actions = {
increment: () => ({ type: "INC", payload: 1 })
};
If you have actions that receives arguments you can wrap them into function and pass to toMatchActionSnapshot
.
const add = (number) => ({ type: "ADD", payload: number });
const actions = {
add: () => add(1)
};
Example
expect(reducer).toHandleActions(actions);
toHaveInitialState(reducer, initialState)
Checks reducer against given intitialState.
Example
expect(reducer).toHaveInitialState(initialState);
toMatchActionSnapshot(actions)
Checks given action creators to match with previous snapshot.
Passed actions should not expect arguments as following:
const actions = {
increment: () => ({ type: "INC", payload: 1 })
};
If you have actions that receives arguments you can wrap them into function and pass to toMatchActionSnapshot
.
const add = (number) => ({ type: "ADD", payload: number });
const actions = {
add: () => add(1)
};
Example
expect(actionCreators).toMatchActionSnapshot();
License
MIT