我正在尝试测试登录组件。具体来说,它会在成功登录时重定向。手动测试时效果很好。但在我的测试中,它从不进行重定向,因此找不到“注销”链接:
test('successfully logs the in the user', async () => {
const fakeUserResponse = {success: true, token: 'fake_user_token'}
jest.spyOn(window, 'fetch').mockImplementationOnce(() => {
return Promise.resolve({
json: () => Promise.resolve(fakeUserResponse),
})
})
const { getByText, getByLabelText, findByTestId } = render(<Router><Login /></Router>)
fireEvent.change(getByLabelText(/email/i), {target: {value: '[email protected] /cdn-cgi/l/email-protection'}})
fireEvent.change(getByLabelText(/password/i), {target: {value: 'password1234'}})
fireEvent.click(getByText(/submit/i))
await waitForElement(() => getByText(/logout/i));
})
我正在重定向react-router
版本 4,如下所示:
{state.resolved ? <Redirect to="/" /> : null}
我是否以错误的方式处理这个问题?
你可以嘲笑Redirect
组件的实现显示一些包含路径的文本,而不是重定向到它:
jest.mock('react-router-dom', () => {
return {
Redirect: jest.fn(({ to }) => `Redirected to ${to}`),
};
});
并期望您的组件显示具有正确路径的文本:
expect(screen.getByText('Redirected to /')).toBeInTheDocument();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)