如何解决如何在Redux中测试递归调度
我实现了自己的方式来处理访问/刷新令牌。基本上,GC_INIT_WITH_MASK
到期时,它将等待另一个动作的分派,如果成功,它将再次自己分派。下面的代码对其进行了更好的解释:
accessToken
问题是我发现用Jest测试真的很困难。实际上,我已经执行了此测试:
export const refresh = () => async (dispatch) => {
dispatch({
type: REFRESH_USER_FETCHING,});
try {
const user = await api.refresh();
dispatch({
type: REFRESH_USER_SUCCESS,payload: user,});
return history.push("/");
} catch (err) {
const { code } = err;
if (code !== "ACCESS_TOKEN_EXPIRED") {
dispatch({
type: REFRESH_USER_ERROR,payload: err,});
const pathsToRedirect = ["/signup"];
const {
location: { pathname },} = history;
const path = pathsToRedirect.includes(pathname) ? pathname : "/login";
return history.push(path);
}
try {
await dispatch(refreshToken());
return dispatch(refresh());
} catch (subErr) {
dispatch({
type: REFRESH_USER_ERROR,});
return history.push("/login");
}
}
};
export const refreshToken = () => async (dispatch) => {
dispatch({
type: REFRESH_TOKEN_FETCHING,});
try {
await api.refreshToken();
dispatch({
type: REFRESH_TOKEN_SUCCESS,});
} catch (err) {
dispatch({
type: REFRESH_TOKEN_ERROR,});
}
};
但是没有完成测试,而是运行不确定。手动测试时不会发生此问题,因此我认为Jest中缺少某些内容,所以我的问题是:有没有办法测试这种递归行为?
谢谢
解决方法
问题是等待您与分派一起使用,分派返回一个动作,而不是一个Promise,请改用Promise.resolve
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。