Как узнать текущий 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
отслеживает только нажатие левой кнопки.