我正在开发一个react本机应用程序,我有一个redux异步操作,当用户尝试登录时调用我的API。成功登录后我更新了redux存储以及我的AsyncStorage以保持用户登录当应用程序重新启动时。
const fetch = (accessTokenInAsyncStore, navigation) => {
return (dispatch) => {
axios({
method: "post",
url: CHECK_ACCESS_TOKEN,
headers: {
Authorization: accessTokenInAsyncStore
}
})
.then(async ({data}) => {
const {accessToken, accessTokenExpiresIn} = camelizeKeys(data);
dispatch(update(accessToken));
await setAccessTokenDetailsInAsyncStore(accessToken, accessTokenExpiresIn);
})
.catch(() => {
removeAccessTokenDetailsFromAsyncStore();
const routeName = ROUTE_CONSTANTS.LoginStart;
const params = {
resetStoreOnLogout: true
};
replaceRoute (navigation, routeName, params);
});
};
};
const setAccessTokenDetailsInAsyncStore = async (accessToken, accessTokenExpiresIn) => {
const accessTokenExpirationTime = Math.floor(Date.now() / 1000) + accessTokenExpiresIn;
await AsyncStorage.setItem(accessTokenKey, accessToken);
await AsyncStorage.setItem(accessTokenExpirationTimeKey, JSON.stringify(accessTokenExpirationTime));
};
const removeAccessTokenDetailsFromAsyncStore = () => {
AsyncStorage.removeItem(accessTokenKey);
AsyncStorage.removeItem(accessTokenExpirationTimeKey);
};
我正在尝试使用redux-mock-store
编写针对此方案的redux操作和reducer的单元测试用例,但我无法理解如何编写具有副作用的thunks
的测试用例。
这是正确的方法还是我需要稍微修改一下我的代码?