【发布时间】:2021-05-04 21:21:25
【问题描述】:
在我的项目中,我有一个命名空间,用于导出一些使用 Axios 的函数,在同一个文件中,我向 axios 实例添加了一个拦截器,如下所示:
axios.interceptors.response.use(
(res) => res,
(error) => {
if (
error.response &&
(error.response.status?.toString() === "400" ||
error.response.status?.toString() === "403" ||
error.response.status?.toString() === "404")
) {
return Promise.reject(
Error(JSON.stringify(error.response.data?.status?.errors[0]))
);
} else if (error.response) {
return Promise.reject(
Error(
`server responsed with the following code: ${error.response?.status} and the following message: ${error.response?.statusText}`
)
);
} else if (error.request) {
return Promise.reject(
Error(
"The request was made but no response was received, check your network connection"
)
);
} else Promise.reject(error);
}
);
我想测试这个拦截器是否按预期工作,我在这里搜索表单并用谷歌搜索了很多,但所有答案基本上都是在嘲笑拦截器而不是测试它。
我试过了:
- 模拟 axios 发布请求的响应并检查返回的 AxiosPromise,但它只包含我模拟的结果。当我使用
mockResolvedValue模拟时,它似乎忽略了拦截器。 - 我尝试向模拟的 axios 实例添加一个拦截器,但这也不起作用。
谢谢
【问题讨论】:
标签: javascript typescript jestjs axios