Как узнать текущий URL при использовании MemoryRouter

Я пытаюсь выяснить, как использовать тест, чтобы утверждать, каково текущее местоположение.

В качестве эксперимента и на основе некоторых документов я написал следующий тест

  test(`Can navigate MemoryRouter`, (done) => {
    const logAll = (p, ...args) => {
      console.log(`SOME OUTPUT`,p, ...args)
      return p.location.pathname
    }

    const div = document.createElement('div')

    const Test = () => (
      <MemoryRouter>
        <React.Fragment>
          <Link to="/foo/bar" id="click-me" />
          <Route render={logAll} />
        </React.Fragment>
      </MemoryRouter>
    )
    ReactDOM.render(React.createElement(Test), div)
    console.log('click')
    Simulate.click(div.querySelector('#click-me'))
  })

Я ожидаю, потому что logAll Маршрут соответствует всем изменениям для входа в систему / (что он делает), а затем снова в /foo/bar, Но последний никогда не регистрируется до истечения времени ожидания теста (около 5 секунд).

Что мне не хватает?

1 ответ

Решение

Ваш тест в порядке (вам даже не нужно done), однако второй аргумент Simulate.click пропущено Если вы добавите его, он будет работать так, как вы ожидаете:

Simulate.click(
    div.querySelector('#click-me'),
    { button: 0 }
);

Посмотрите на кодовую базу показывает, что Link не происходит клики, которые не имеют button=0 в случае.

Вина этой линии показывает, что Link отслеживает только нажатие левой кнопки.

Другие вопросы по тегам