redux-logic test utilities to facilitate the testing of logic. Create mock store

Downloads in past


2.0.05 years ago7 years agoMinified + gzip package size for redux-logic-test in KB


redux-logic-test - redux-logic test utilities
"Simplifying testing with redux-logic"

- createMockStore - create a redux-logic middleware and a redux store, attaching the middleware and providing a mechanism to verify the dispatched actions
Build Status Known Vulnerabilities NPM Version Badge


redux-logic-test has peerDependencies of redux and redux-logic (which also needs rxjs)
npm install rxjs --save
npm install redux-logic --save
npm install redux --save
npm install redux-logic-test --save-dev

ES6 module import

import { createMockStore } from 'redux-logic-test';


const createMockStore = require('redux-logic-test').default.createMockStore;

UMD/CDN use from script tags

The UMD build is mainly used for using in online playgrounds like jsfiddle.
<script src=""></script>
<script src=""></script>
<script src=""></script>
<script type="text/javascript">
  const { createLogic } = ReduxLogic;
  const { createMockStore } = ReduxLogicTest;
  // ready to use createMockStore


import { createMockStore } from 'redux-logic-test';

// specify as much as necessary for your particular test
const store = createMockStore({
  initialState: optionalObject,
  reducer: optionalFn, // default: identity reducer
  logic: optionalLogic, // default: []
  injectedDeps: optionalObject, // default {}
  middleware: optionalArr // other mw, exclude logicMiddleware

store.dispatch(...) // use as necessary for your test

// when all inflight logic has all completed calls fn + returns promise
store.whenComplete(fn) - shorthand for store.logicMiddleware.whenComplete(fn)

store.actions - the actions dispatched, use store.resetActions() to clear
store.resetActions() - clear store.actions

// access the logicMiddleware created for logic/injectedDeps props
// use addLogic, mergeNewLogic, replaceLogic, whenComplete, monitor$


- simplify the creation of a testing redux store with logicMiddleware attached - add built-in middleware to track actions that are dispatched - make it easy to verify the actions that were dispatched

Quick example

import { createMockStore } from 'redux-logic-test';
import { createLogic } from 'redux-logic';

const fooLogic = createLogic({
  type: 'FOO',
  process({ API, getState, action }, dispatch, done) {
      .then(results => {
        dispatch({ type: 'FOO_SUCCESS', payload: results });

const logic = [fooLogic]; // array of logic to use/test
const injectedDeps = { // include what is needed for logic
  API: api // could include mocked API for easy testing

const initialState = {}; // optionally set
const reducer = (state, action) => { return state; }; // optional

const store = createMockStore({

store.dispatch({ type: 'FOO' }); // kick off fetching
store.dispatch({ type: 'BAR' }); // other dispatches
store.whenComplete(() => { // runs this fn when all logic is complete
    { type: 'FOO' },
    { type: 'BAR' },
    { type: 'FOO_SUCCESS', payload: [...] }
  // if desired, can reset the actions for more tests
  // store.resetActions(); // clear for more tests

  // be sure to return the whenComplete promise to your test
  // or if using a done cb, call it to indicate that your async
  // test is finished


Live examples

- basic usage - simple use or createMockStore to test actions that were dispatched (jsfiddle) - async search - async search using createMockStore to setup a test store (jsfiddle)

Full examples

- browser-basic - basic example of using createMockStore to test logic - nodejs-basic - simple Node.js example using createMockStore via Commonjs to test logic

Get involved

If you have input or ideas or would like to get involved, you may:
- contact me via twitter @jeffbski - - open an issue on github to begin a discussion - - fork the repo and send a pull request (ideally with tests) -


This project is supported by CodeWinds Training

License - MIT

MIT license