首页 > 解决方案 > 我想测试路线是否存在

问题描述

我想测试组件中是否存在路由。应用程序应在特定路径上呈现特定组件。

应用程序.js

    return (
      <Router>
        <Header jsTrendingTopics={this.props.data} />
        <Switch>
          <Route exact path="/" render={() => <Dashboard jsTrendingTopics={this.props.data} />} />
          <Route exact
            path="/language/:languagename"
            render={(props) => this.handleTopic(props)
            }
          />
        </Switch>
      </Router>
    )
  }

我希望测试返回应该在该特定路由上呈现的组件。

标签: javascriptreactjsjestjs

解决方案


我认为这MemoryRouter就是initialEntries={['/]}你要找的。


import Dashboard from ...
jest.mock('path to Dashboard component');


Dashboard.mockImplementationOnce(() => <div>Dashboard</div>);

    render(
      <MemoryRouter initialEntries={['/']}>
        <App/>
      </MemoryRouter>
    );

expect(screen.getByText("Dashboard").toBeInTheDocument()

您可以阅读此文档以获取更多示例 https://javascript.plainenglish.io/testing-react-router-with-jest-bc13d367bad


推荐阅读