Тестирование перенаправления после отправки с React Testing Library - PullRequest
0 голосов
/ 13 октября 2019

Я пытаюсь проверить компонент входа в систему. В частности, что он перенаправляет на успешный вход в систему. Работает нормально при тестировании вручную. Но в моем тесте он никогда не выполняет перенаправление и поэтому не может найти ссылку «Выйти»:

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: 'dan@example.com'}})
  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}

Я поступаю неправильно?

1 Ответ

0 голосов
/ 13 октября 2019

Итак, я закончил так:

const { getByText, getByLabelText, } = render(
  <Router>
    <Login/>
    <Switch>
      <Route path="/">
        <div>logged out</div>
      </Route>
    </Switch>
  </Router>
)

fireEvent.change(getByLabelText(/email/i), {target: {value: 'dan@example.com'}})
fireEvent.change(getByLabelText(/password/i), {target: {value: 'password1234'}})
fireEvent.click(getByText(/submit/i))

await waitForElement(() => getByText(/logged out/i))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...