#reactjs #testing #jestjs #react-testing-library
Вопрос:
Я тестирую свой компонент приложения , выполняя процесс аутентификации (я начинаю с целевой страницы, затем нажимаю кнопку войти, чтобы перенаправиться на страницу входа, заполняю поле электронной почты и пароля и нажимаю кнопку войти, чтобы получить доступ к первой странице, которая в моем случае является страницей установки), но после успешного ответа на вход с сервера я перенаправлен на страницу входа, и я не могу понять, почему. Вот тест, о котором идет речь:
it( 'Login', async () =gt; { render(lt;App /gt;) // Check we are on the good location at the begining of the test await waitFor(() =gt; expect(window.location.pathname).toBe('/')) // env variable needed to connect to the account const email = process.env.TEST_EMAIL const password = process.env.TEST_PASSWORD // // signIn button from the landing page const signInButton = screen.getByTestId('landing-signin') expect(signInButton).toBeInTheDocument() // click action of this button fireEvent.click(signInButton) // check the path await waitFor( async () =gt; expect(window.location.pathname).toBe('/signin')) // check the presence of elements in signin page const emailField = screen.getByPlaceholderText('Email address') const passwordField = screen.getByPlaceholderText('Your password') expect(passwordField).toBeInTheDocument() expect(emailField).toBeInTheDocument() // fill the credentials userEvent.type(emailField, email) userEvent.type(passwordField, password) const button = screen.getByTestId('submit-button') expect(button).toBeInTheDocument() // fire event login by clicking the button act(() =gt; { userEvent.click(button) }) // // check the path await waitFor( async () =gt; expect(window.location.pathname).toBe('/installations')) // check the title of installation page to be in the document const title = screen.getByText('Installation selection') expect(title).toBeInTheDocument() // check info to be in the document const infoText = screen.getByText('Please, wait a little bit while we are fetching {{data}}') expect(infoText).toBeInTheDocument() // back to /signin console.log('window.location.pathname', window.location.pathname) })
У меня включен jsdom, я использую библиотеку Jest и React-тестирования. Я нахожу некоторые элементы страницы установки, но получаю перенаправление на страницу входа.
Комментарии:
1. Трудно сказать, не видя кода
App
компонента. Не могли бы вы предоставить код для тестируемого компонента?