我正在尝试使用 MemoryRouter
测试一个组件,如React-router docs中所示,初始条目已设置,因此我可以在包装组件中包含params .
组件示例:
render () {
console.log(this.props.match.params.item)
}
在应用程序(工作正常):
<Router>
<Switch>
<Route exact path='/' render={() => (
<Redirect to={`/${guessLocale()}`} />
)} />
<Route exact path='/:lang' component={Home} />
<Route exact path='/:lang/:itemName' component={Vidactic} />
</Switch>
</Router>
在测试中(从Enzyme开始,匹配未定义):
mount(<MemoryRouter initialEntries={['/fr/pamp']}>
<Vidactic />
</MemoryRouter>)
所以我使用了这种解决方法,但为什么initialEntries不能单独工作?
mount(<MemoryRouter initialEntries={['/fr/pamp']}>
<Vidactic match={{ params: { item: 'pamp' } }} />
</MemoryRouter>)
1 回答
测试中没有
Route
,因此不会进行匹配,并且this.props.match
将未定义Vidactic
. 添加路线应该使它工作:为避免重复路由,您可能希望将
<Switch>..</Switch>
部分放在单独的组件中并在测试中使用它 .