Skip to content

doniyor2109/jest-redux

Repository files navigation

jest-redux

Jest matchers for testing redux easier and more declaritive.

Build Status GitHub

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

// ./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 tests

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

Example

expect(reducer).toHandleActions(actions);

toHaveInitialState(reducer, initialState)

Checks reducer against given initialState.

Example

expect(reducer).toHaveInitialState(initialState);

toMatchActionSnapshot(actions)

Checks given action creators to match with previous snapshot.

Passed actions should not expect arguments

Example

expect(actions).toMatchActionSnapshot();

License

MIT