redux-actions-assertions
Assertions for redux actions testing.
This library adds assertions for redux actions testing.
It use redux-mock-store to mock redux store.
Supported Assertion Frameworks/Libraries:
If you have not found assertion framework/library that you are using - please add comment into this issue.
What it does:
- Allows to avoid retesting nested action creators;
- Reduces repetitive code of test methods;
- Simplifies initial setup;
Allows to avoid retesting nested action creators
It allows to test only actions that need to be tested.
Example:
We have two actions (A, B). Each one makes async http requests.
Action A makes a request and if the result is successful it triggers Action B.
Action B is also used as an independent action.
Action B can be tested separately.
Therefore, we don't need to test it again in Action A.
Actions:
{ return { ; return api; };} { return { ; return api; };}
Without:
const expectedActions = type: action_a_start type: action_a_success type: action_b_start // retesting of action B type: action_b_success // retesting of action B];const store = ;store;
With:
;
Reduces repetitive code of test methods
It reduces boilerplate of test methods and makes testing fluent.
Without:
const store = ;const expectedActions = type: typesFETCH_TODOS_REQUEST /* All expected triggered action objects */;store;
With:
const expectedActions = /*All expected triggered action objects or action creator functions*/;;
With using customised store state:
;
Simplifies initial setup
It provides singe-time global configuration for middlewares and initial store state.
Without:
const middlewares = thunk;const mockStore = ;const store =
With:
;// to set custom initial state ;// to generate initial state of your application;
Installation
Using npm:
$ npm install --save-dev redux-actions-assertions
Redux middlewares registration
// using ES6 modules; // using CommonJS modulesvar registerMiddlewares = registerMiddlewares; // registration;
Default initial store state registration
By using state object or function:
// using ES6 modules; // using CommonJS modulesvar registerInitialStoreState = registerInitialStoreState; // registration;
By using your root reducer:
// using ES6 modules; // using CommonJS modulesvar reduxActionsAssertions = ;var registerInitialStoreState = reduxActionsAssertionsregisterInitialStoreState; // registration;