我试图弄清楚如何使用测试来断言当前位置路径名是什么。
作为实验and based on some docs,我编写了以下测试
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秒)之前记录日志。我想念什么?
最佳答案
您的测试还可以(您甚至不需要done
),但是错过了Simulate.click
的第二个参数。如果添加它,它将按预期工作:
Simulate.click(
div.querySelector('#click-me'),
{ button: 0 }
);
查看the codebase显示
Link
不会继续进行没有button=0
事件的点击。Blame of this line,表示
Link
tracks only left button click。