Javascript 如何使用<;路由器>;里面有标签吗?
关于: 嘿,现在我正在尝试用jest和我的react组件的react测试库编写测试。我也使用react路由器 问题: 我想检查当路径发生变化而没有与单个组件交互时,应用程序是否路由到正确的组件 例如,如果当前路径名为“/impressum”,我只想从impressum页面获得一个快照 我不知道如何将路径传递到Javascript 如何使用<;路由器>;里面有标签吗?,javascript,reactjs,react-router,react-testing-library,Javascript,Reactjs,React Router,React Testing Library,关于: 嘿,现在我正在尝试用jest和我的react组件的react测试库编写测试。我也使用react路由器 问题: 我想检查当路径发生变化而没有与单个组件交互时,应用程序是否路由到正确的组件 例如,如果当前路径名为“/impressum”,我只想从impressum页面获得一个快照 我不知道如何将路径传递到 我还尝试包装 我还尝试用from->import{Router}from“react Router dom”包装组件;并推送历史对象 我的基本测试代码 下面您可以看到我用于测试的代码,我在
我还尝试包装
我还尝试用
from->import{Router}from“react Router dom”包装
组件;并推送历史对象
我的基本测试代码
下面您可以看到我用于测试的代码,我在测试时做了一些更改,但这一基本部分一直保留着
describe("snapshot-test", () => {
it("renders component", () => {
const { asFragment } = render(
<App></App>
)
expect(asFragment()).toMatchSnapshot()
})
})
description(“快照测试”),()=>{
它(“呈现组件”,()=>{
const{asFragment}=render(
)
expect(asFragment()).toMatchSnapshot()
})
})
我认为您需要像这样在“/”的路径前面加上exact
<Switch>
<Route path="/weatherDetails" component={WeatherDetailsPage} />
<Route path="/addWeather" component={AddWeatherPage} />
<Route path="/deleteWeather" component={DeleteWeatherPage} />
<Route path="/impressum" component={ImpressumPage} />
<Route exact path="/" component={WeatherPage} />
</Switch>
这意味着,只有当你有这个路径=“/”的天气页面显示你添加到它像路径=“/impersum”你会看到只有impersupage。
希望它能帮助你:)我刚刚找到了一个解决方案
我不得不把路由器模拟成一个div,并包含它的子代码。
其工作方式如下:
您需要包含以下代码的文件夹\uuuuumocks\uuuu/react router dom.js
:
import React from 'react';
const reactRouterDom = require("react-router-dom")
reactRouterDom.BrowserRouter = ({children}) => <div>{children}</div>
module.exports = reactRouterDom
同时访问下面的链接,我从那里得到了解决方案。
谢谢您的快速回答。不幸的是,它不起作用。此外,如果您不使用确切的,路线最后会列出(这里的顺序很重要)。然后“/”路径将捕获不包括其他路径之一的所有内容。因此,当
首先写入时,每条路线都会显示在WeatherPage上。但是当它最后写入时,不是确切路径“/weatherDetails”、“/addWeather”等的所有内容都会显示WeatherPage组件。我认为我的代码无法工作,因为标签。RTL中是否有任何方法可以禁用react组件中的生命周期方法。因为当我这样做的时候,这些方法就会被执行。!我需要不必要地嘲笑所有人@Benjamin@SakthiSureshAnand不幸的是,我不知道Sry:/
import React from 'react';
const reactRouterDom = require("react-router-dom")
reactRouterDom.BrowserRouter = ({children}) => <div>{children}</div>
module.exports = reactRouterDom
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()
})
})