在Redux中对异步调用进行单元测试/存根的方法有多种。下面是一种常见的方法:
npm install --save-dev redux-mock-store
import configureMockStore from 'redux-mock-store';
import thunk from 'redux-thunk';
import { fetchUser } from './actions';
const middlewares = [thunk];
const mockStore = configureMockStore(middlewares);
describe('Async actions', () => {
it('should dispatch the correct actions on successful API call', () => {
const store = mockStore({}); // 创建一个模拟store
return store.dispatch(fetchUser()).then(() => {
const actions = store.getActions();
expect(actions[0]).toEqual({ type: 'FETCH_USER_REQUEST' });
expect(actions[1]).toEqual({ type: 'FETCH_USER_SUCCESS', payload: { /* 用户数据 */ } });
});
});
});
在上面的示例中,我们创建了一个模拟store,并使用store.dispatch调用了fetchUser异步action创建函数。然后,我们使用store.getActions()获取store中的所有action,并对其进行断言。
需要注意的是,上述示例中的fetchUser异步action创建函数应该返回一个Promise,以便在测试中使用.then()进行链式调用。
这种方法可以帮助我们对Redux中的异步调用进行单元测试,并验证在不同情况下是否正确地触发了相应的action。
领取专属 10元无门槛券
手把手带您无忧上云