如何解决我如何在react-testing-library中测试history.push?
我有这种情况:
1-用户填写表单字段;
2-用户单击“提交”按钮;
3-异步函数“ mutateRegisterUser()
”被调用;
4-当诺言完成后,我的组件调用函数redirectToLogin()
,该函数将用户重定向到路由"/"
这是我的代码:
const [mutateRegisterUser,{isLoading}] = useMutation<
AxiosResponse<IRequestResponse>,AxiosError<IRequestResponse>,IRegisterUser
>(registerUser,{
onSuccess: (response: AxiosResponse<IRequestResponse>) => {
snackBar.enqueueSnackbar(response.data.message,{variant: 'success'})
redirectToLogin();
},onError: (error: AxiosError<IRequestResponse>) => {
snackBar.enqueueSnackbar(error.response?.data.message,{variant: 'error'});
}
});
const redirectToLogin = () => {
history.push('/');
};
所以我尝试了这个测试:
test("should register user successfully when all fields is correctly filled",async () => {
await act(async () => {
const {container} = render(<Router history={history}><BannerRightRegister /></Router>);
const spyOnRedirectToLogin = jest.spyOn(history,'push');
const inputName = container.querySelector('#register-user-first-name')!;
fireEvent.change(inputName,{
target: { value: "user"},});
const inputSecondName = container.querySelector('#register-user-second-name')!;
fireEvent.change(inputSecondName,{
target: { value: "user" },});
const inputEmail = container.querySelector('#register-user-email')!;
fireEvent.change(inputEmail,{
target: { value: "user@hotmail.com.br" },});
const inputPassword = container.querySelector('#register-user-password')!;
fireEvent.change(inputPassword,});
const inputConfirmationPassword = container.querySelector('#register-user-confirmation-password')!;
fireEvent.change(inputConfirmationPassword,});
fireEvent.click(screen.getByText(/Create account/i));
expect(spyOnRedirectToLogin).toHaveBeenCalled()
})
我收到此错误,无法弄清原因:
当所有字段正确时,×应该成功注册用户 充满(339ms)
●当所有字段正确时,应该成功注册用户 填充
expect(jest.fn()).toHaveBeenCalled() Expected number of calls: >= 1 Received number of calls: 0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。