尝试学习测试。使用testing-library、Jest和React-Router v6以及Typescript。我正在尝试找出如何测试链接。我已经到处寻找解决方案,但找不到一个。使用React-Router v6。代码看起来像下面这样(link仅是带有href的常规元素),只想确保用户能够到达新页面(在这种情况下是从“忘记密码”页面到登录页面)。
//omitted imports but imported all appropriate items from below
describe('ForgotPassword', () => {
test('User can navigate to login screen', async () => {
render(
<MemoryRouter initialEntries={['/forgot-password' ]}>
<ForgotPassword />
</MemoryRouter>)
userEvent.click(screen.getByRole('link', { name: 'Back to Login' }))
await waitFor(() => {
expect(screen.getByRole('heading', { name: 'Login' })).toBeInTheDocument()
})
})
//also tried:
describe('ForgotPassword', () => {
test('User can navigate to login screen', async () => {
render(
<MemoryRouter initialEntries={['/forgot-password' ]}>
<Routes>
<Route path='/forgot-password' component={<ForgotPassword />} />
<Route path='/login' component={<Login />} />
<Routes>
</MemoryRouter>)
userEvent.click(screen.getByRole('link', { name: 'Back to Login' }))
await waitFor(() => {
expect(screen.getByRole('heading', { name: 'Login' })).toBeInTheDocument()
})
})
//also tried the following:
const history = createMemoryHistory({ initialEntries: ['/home'] });
const { getByText } = render(
<Router history={history}>
<ButtonLogin />
</Router>
);
got a TS error: Property 'history' does not exist on type 'IntrinsicAttributes & RouterProps'.
//also tried using fireEvent instead of userEvent