Typescript 用参数模拟和测试误差
我试图模拟UseOtation,它有一个特定的参数,名为onError。我正在使用它,如下面的代码所示 无论何时使用UsereDirectorRorMutation,都会将带有令牌的头附加到请求,因此如果令牌无效,将出现401错误响应,我将在useMutation附带的onError函数中捕获该响应,并将用户重定向到登录页面Typescript 用参数模拟和测试误差,typescript,testing,jestjs,react-testing-library,react-query,Typescript,Testing,Jestjs,React Testing Library,React Query,我试图模拟UseOtation,它有一个特定的参数,名为onError。我正在使用它,如下面的代码所示 无论何时使用UsereDirectorRorMutation,都会将带有令牌的头附加到请求,因此如果令牌无效,将出现401错误响应,我将在useMutation附带的onError函数中捕获该响应,并将用户重定向到登录页面 export const useRedirectOnErrorMutation = < TData = unknown, TError = unkno
export const useRedirectOnErrorMutation = <
TData = unknown,
TError = unknown,
TVariables = void,
TContext = unknown
>(
redirectionPath: string,
key: MutationKey,
mutationFunction: MutationFunction<TData, TVariables>,
options?: UseMutationOptions<TData, TError, TVariables, TContext>
): UseMutationResult<TData, TError, TVariables, TContext> => {
const router = useRouter();
console.log(useMutation);
return useMutation(key, mutationFunction, {
...options,
onError: (error) => {
if (error?.response.status == "401" || error?.response.status == "422") {
localStorage.removeItem("token");
localStorage.removeItem("userId");
router.push(redirectionPath);
}
},
});
};
理想情况下,在act包装的测试中传递一个错误对象应该是可行的,但它也会以错误消息结束
act(()=>{
onError({response:{status: 401}},{},{})
})
任何帮助都将不胜感激!我完全被困在这里。我真的不能给你一个具体的答案,也许只是一点建议:
onError
方法,这是react query
内部测试的内容。不要测试第三方代码-测试您自己的代码。这样的东西可以通过集成或端到端测试进行更好的测试,这是一个很好的工具
请重新措辞你的问题。什么有效,什么无效?它的表现如何,你希望它表现如何?我已经做了改变!我希望这能提供更多的见解。对于给您带来的不便,我深表歉意。但是,我如何确定当遇到错误时,页面将从测试角度重定向?另外,我需要100%的覆盖率,因为如果测试不超过95%,我们的管道就会失败。关键是,它鼓励我们保持代码质量并处理边缘情况。另外,假设当我模拟API响应并发送401错误时,将执行onError部分,并且它不会有用于检查状态的error对象。
onError: (error) => {
if (error?.response.status == "401" || error?.response.status == "422") {
localStorage.removeItem("token");
localStorage.removeItem("userId");
router.push(redirectionPath);
}
act(()=>{
onError({response:{status: 401}},{},{})
})