如何使用内部的<Router>标签测试组件?

本杰明

关于:

嘿,此刻,我正在尝试用jest和我的react组件的react测试库编写测试。我也使用react-router。

问题:

我想检查路径更改时是否在不与单个组件交互的情况下,应用程序是否路由到正确的组件。

因此,例如,如果当前路径名是“ / impressum”,那么我只想从Impressum页面获得快照。

我无法弄清楚如何将路径传递到,<App>因此仅显示一条路线。

我要测试的组件:

import React from 'react'
import { BrowserRouter as Router, Switch, Route } from "react-router-dom"

import WeatherPage from "../WeatherPage/WeatherPage.js"
import AddWeatherPage from "../AddWeatherPage/AddWeatherPage.js"
import WeatherDetailsPage from "../WeatherDetailsPage/WeatherDetailsPage.js"
import DeleteWeatherPage from '../DeleteWeatherPage/DeleteWeatherPage.js'
import ImpressumPage from '../ImpressumPage/ImpressumPage.js'

class App extends React.Component {
  render() {
    return (
      <Router>
        <Switch>
          <Route path="/weatherDetails" component={WeatherDetailsPage} />
          <Route path="/addWeather" component={AddWeatherPage} />
          <Route path="/deleteWeather" component={DeleteWeatherPage} />
          <Route path="/impressum" component={ImpressumPage} />
          <Route path="/" component={WeatherPage} />
        </Switch>
      </Router>
    );
  }
}

export default App

我试过的

  1. 因此,我已经尝试实现以下示例:https : //testing-library.com/docs/example-react-router

  2. 我还尝试<App>使用<MemoryRouter>-> import'React-router'中的import {MemoryRouter}包装组件并推送路线:https : //reacttraining.com/react-router/web/guides/testing

  3. 我还尝试使用from- > import {Router} from“ react-router-dom”包装<App>组件<Router>并推动历史对象。

我的基本测试代码

在看到您用于测试的代码之后,我在测试时进行了一些更改,但是此基本部分始终存在。

describe("snapshot-test", () => {
    it("renders component", () => {
        const { asFragment } = render(
            <App></App>
        )

        expect(asFragment()).toMatchSnapshot()
    })
})
本杰明

我刚刚找到了解决方案。

我必须模拟Router成为div并包含其子代代码。这可以通过以下方式进行:

您需要__mocks__/react-router-dom.js包含以下代码的文件夹

import React from 'react';

const reactRouterDom = require("react-router-dom")
reactRouterDom.BrowserRouter = ({children}) => <div>{children}</div>

module.exports = reactRouterDom

现在,您可以使用MemoryRouter来定义Route应该指向的路径

App.test.js:

import React from "react";
import { render } from "@testing-library/react";
import { MemoryRouter } from 'react-router-dom';
import App from './App';


describe("unit-test", () => {
    it("renders the right component with following path '/impressum'", () => {
        const { getByTestId } = render(
            <MemoryRouter initialEntries={['/impressum']}>
                <App></App>
            </MemoryRouter>
        )

        let impressumPage = getByTestId("impressum-page")

        expect(impressumPage).toBeInTheDocument()
    })
})

另请访问以下链接,我从那里获得了解决方案。https://medium.com/@antonybudianto/react-router-testing-with-jest-and-enzyme-17294fefd303

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在组件内部使用React Router Link

来自分类Dev

在PHPUnit测试中使用Symfony Router组件生成URL

来自分类Dev

如何在EL内部测试JSF复合组件是否与f:ajax标签一起使用?

来自分类Dev

如何使用React测试库测试组件的内部功能

来自分类Dev

使用 React Router 嵌套组件

来自分类Dev

Angular Router 使用相同的组件

来自分类Dev

使用链接测试React Router

来自分类Dev

如何在 React Router 4 下对组件进行单元测试

来自分类Dev

如何使用react-intl,react-router-dom v4和TypeScript对React组件进行单元测试

来自分类Dev

使用React Router,如何使用路由配置传递组件道具?

来自分类Dev

React-router-dom v4 路由以及如何在子组件内部显示

来自分类Dev

无法在Meteor中使用Flow-Router / React订阅React组件内部的关注者

来自分类Dev

如何使用react-router渲染嵌套组件

来自分类Dev

如何使用React Router替换render方法中的组件?

来自分类Dev

用户登录后如何使用React Router渲染不同的组件

来自分类Dev

如何使用react-router在组件中保存表单状态

来自分类Dev

如何在React-Router的组件中使用参数?

来自分类Dev

如何使用react-router根据路线渲染容器/组件?

来自分类Dev

如何使用 react-router 4 导航嵌套组件

来自分类Dev

如何使用CSS在React Router Dom中选择链接标签?

来自分类Dev

如何管理React Router组件的布局

来自分类Dev

使用React Router组件进行重定向

来自分类Dev

使用React Router更改基于URL的组件

来自分类Dev

对React-Router组件使用多种布局

来自分类Dev

无法使用React Router渲染组件

来自分类Dev

在函数内使用 Router 组件 react

来自分类Dev

使用Akka Router测试Spray API

来自分类Dev

使用React Router的导航测试失败

来自分类Dev

反应测试。如何测试反应组件内部的功能

Related 相关文章

  1. 1

    在组件内部使用React Router Link

  2. 2

    在PHPUnit测试中使用Symfony Router组件生成URL

  3. 3

    如何在EL内部测试JSF复合组件是否与f:ajax标签一起使用?

  4. 4

    如何使用React测试库测试组件的内部功能

  5. 5

    使用 React Router 嵌套组件

  6. 6

    Angular Router 使用相同的组件

  7. 7

    使用链接测试React Router

  8. 8

    如何在 React Router 4 下对组件进行单元测试

  9. 9

    如何使用react-intl,react-router-dom v4和TypeScript对React组件进行单元测试

  10. 10

    使用React Router,如何使用路由配置传递组件道具?

  11. 11

    React-router-dom v4 路由以及如何在子组件内部显示

  12. 12

    无法在Meteor中使用Flow-Router / React订阅React组件内部的关注者

  13. 13

    如何使用react-router渲染嵌套组件

  14. 14

    如何使用React Router替换render方法中的组件?

  15. 15

    用户登录后如何使用React Router渲染不同的组件

  16. 16

    如何使用react-router在组件中保存表单状态

  17. 17

    如何在React-Router的组件中使用参数?

  18. 18

    如何使用react-router根据路线渲染容器/组件?

  19. 19

    如何使用 react-router 4 导航嵌套组件

  20. 20

    如何使用CSS在React Router Dom中选择链接标签?

  21. 21

    如何管理React Router组件的布局

  22. 22

    使用React Router组件进行重定向

  23. 23

    使用React Router更改基于URL的组件

  24. 24

    对React-Router组件使用多种布局

  25. 25

    无法使用React Router渲染组件

  26. 26

    在函数内使用 Router 组件 react

  27. 27

    使用Akka Router测试Spray API

  28. 28

    使用React Router的导航测试失败

  29. 29

    反应测试。如何测试反应组件内部的功能

热门标签

归档