如何解决Jest酶测试ReactJS App组件加载并达到路由器错误
我正在尝试测试包含整个应用程序的App组件。使用笑话和酶,我想断言#msin存在于上,这是重定向后重定向路由器在'/'处加载的默认组件。但是我收到了一个未捕获的redirectRequest异常。
使用酶的dive()我得到
<App />
没有wrapper.dive(),使用酶I
<ContextProvider value={{...}}>
<App />
</ContextProvider>
当安装而不是浅时,我得到一个
Uncaught RedirectRequest { uri: '/dashboard' }
所以我从使用测试库的reach-router github示例中添加了renderWithRouter示例,我仍然得到了
export const renderWithRouter = (
ui: JSX.Element,{ route = `/`,history = createHistory(createMemorySource(route)) } = {}
): any => {
return {
...render(<LocationProvider history={history}>{ui}</LocationProvider>),// adding `history` to the returned utilities to allow us
// to reference it in our tests (just try to avoid using
// this to test implementation details).
history
}
}
const wrapper = renderWithRouter(
<Provider store={mockStore}>
<App />
</Provider>
)
// still get Uncaught RedirectRequest { uri: '/dashboard' }
当前文件
describe(`App-component`,() => {
it(`app loads`,() => {
const mockStore = getStore({})
const wrapper = shallow(
<Provider store={mockStore}>
<App />
</Provider>
).dive()
console.log(wrapper.find(`#msin`))
})
})
app.ts
const App = (): JSX.Element => {
const { settings} = useSelector((state: rootState) => state)
return (
<ThemeProvider theme={themes}>
<CssBaseline />
<Router>
<PublicRoute path="/*" component={Main} />
<PublicRoute path="/login" component={Login} />
<Redirect from="/" to="/dashboard" />
</Router>
</ThemeProvider>
)
}
main.ts
return (
<main className={classes.root} id={`msin`}>
<Router>
<Home="/home" />
</Router>
</main>
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。