![](/img/trans.png)
[英]How Can I test a an action reducer with an async call and dispatch inside using Jest?
[英]How can I test vuex action which with jest which has an api call inside it?
ASYNC ACTION VUEX :这是将从组件调用的异步操作,它由一个函数 fetchGaragesData 组成,该函数将进行 api 调用以从服务器获取数据。
[ACTION_TYPES.FETCH_CASHLESS_GARAGES]: async (
{ dispatch, commit, state, rootState },
payload
) => {
commit(MUTATION_TYPES.SET_MISC_KEYS, {
fetchingCashlessGaragesInitiated: true,
})
let { insurerSlug, makeId, rtoCode } = payload
const url = ApiUrls.getCashlessGarages + `${insurerSlug}/${makeId}`
const response = await fetchGaragesData(url, rtoCode)
dispatch(ACTION_TYPES.MODIFY_RTO_WISE_GARAGES_DATA, response)
},
fetchGaragesData 的实现:这个函数在内部调用 axios get:
export const fetchGaragesData = (url: string, rtoCode: string) => {
return get(url, {
rto_code: rtoCode,
all_states_data: true,
})
}
如何测试操作 ACTION_TYPES.FETCH_CASHLESS_GARAGES ???
您可能有 API 模拟响应。 因此,在您的规范文件中,您需要为该特定 API 调用添加模拟响应。
将您的文件包含在具有实际后端 API 调用的规范文件中。 例如:
import someName from 'path of file'
jest.mock('someName', () => ({
fetchGaragesData: jest.fn((url, rtoCode) =>
success({ body:
Here comes your response body
}})
)
url 和 rtoCode 应该是 API 调用文件中使用的变量的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.