微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Jest酶测试ReactJS App组件加载并达到路由器错误

如何解决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 举报,一经查实,本站将立刻删除。