jest-redux v1.0.0
jest-redux
Jest matchers for testing redux easier and more declaritive.
Table of Contents
Getting start
Installation
yarn add --dev jest-reduxor
npm install --save-dev jest-reduxSetup
Via setupTestFrameworkScriptFile config
Add jest-redux to your Jest setupTestFrameworkScriptFile configuration
"jest": {
"setupTestFrameworkScriptFile": "jest-redux"
}Via setupTest script
Require jest-redux from setupTest script
// ./setupTest.js
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); // Passes tests
const readyActions = {
add: () => add(1),
remove: () => remove(1),
};
expect(reducer).toHandleActions(readyActions); // Passes testsAPI 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