我们如何模拟redux thunk的实现。
文件中有thunk:-src/actions.js
export const getRequest = () => async dispatch => {
return await dispatch(
fetchRequestInfo(),
);
};
export const getBanks = () => async dispatch => {
const response = dispatch(getRequest());
if (!!response) {
dispatch(success());
} else {
dispatch(failure());
}
};
在我的src/actions.spec.js
中,我想模拟getRequest
并简单地返回一个json数据,如:-
import * as actions from 'actions';
const mockReqResponse = async () => {
return {data: '1123'};
};
const mockGetReq = jest.spyOn(actions, 'getRequest').mockImplementation(() => mockReqResponse);
describe('getBanks should work', async () => {
const store = mockStore(); // mocked redux store
await store.dispatch(action.getBanks());
})
代码流没有到达getRequest
的模拟实现,即mockReqResponse
。我做错了什么吗?
1条答案
按热度按时间qfe3c7zg1#
这是测试同一个模块中的thunk时的常见问题。您可以将
getRequest
移到一个单独的模块中,或者查看此问题的最上面的答案:How to mock functions in the same module using Jest?这有点奇怪,但它可以工作。这允许你测试依赖于同一个模块中的几个其他thunk(或者简单的操作创建者)的thunk。