Comments (1)
You could use https://github.com/arnaudbenard/redux-mock-store together with https://github.com/ctimmerm/axios-mock-adapter for testing and then check if your mock store contains your expected actions.
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import axios from 'axios';
import MockAdapter from 'axios-mock-adapter';
const MockApi = new MockAdapter(axios);
const middlewares = [thunk.withExtraArgument(axios)];
const mockStore = configureMockStore(middlewares);
const store = mockStore();
test('dispatches LOAD_STUFF_SUCCESS if everything works correctly', () => {
MockApi.onGet(BASE_URL).reply(200, {
stuff: 'stuff'
});
const expectedAction = { type: 'LOAD_STUFF_SUCCESS' };
return store.dispatch(loadStuff()).then(() => {
expect(
store.getActions().find(a => a.type === expectedAction.type)
).toBeDefined();
});
});
// If you need, you can test explicitly for _ERROR and _SUCCESS,
// but I would just rely on this library doing its job correctly.
test('dispatches LOAD_STUFF_ERROR if something goes wrong', () => {
MockApi.onGet(BASE_URL).reply(404);
const expectedAction = { type: 'LOAD_STUFF_ERROR' };
return store.dispatch(loadStuff()).then(() => {
expect(
store.getActions().find(a => a.type === expectedAction.type)
).toBeDefined();
});
});
And loadStuff()
is a regular action creator:
export const BASE_URL = 'https://example.com/api';
export const loadStuff = () => ({
type: 'LOAD_STUFF',
payload: {
request: {
url: BASE_URL
}
}
});
Hope this helps!
from redux-axios-middleware.
Related Issues (20)
- Any type definition for the promise returned?
- multiClientMiddleware broken? Cannot read property 'request' of undefined
- document is not defined when apply in react native
- Incorrect then/catch chain called HOT 1
- [Interceptors]: Not working response 400 -> 500 status code
- [Interceptors] getSourceAction no longer working on Axios 0.19^
- Working with react hooks (useDispatch())
- Support for "Is Loading" State? HOT 1
- on fail I'm not getting error response's data HOT 6
- meta.previousAction is not the action that generated the action in async requests HOT 1
- How to cancel a request?
- Call another api HOT 2
- MultiClient Middleware HOT 1
- Authorisation header won't update HOT 1
- What about Typescript? How I can get typed action in component? HOT 2
- how to call getSourceAction
- Error response is missing properties
- Cannot set onUploadProgress HOT 2
- Dead Repo? HOT 7
- How to block request before sending ?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from redux-axios-middleware.