您好,我是第一次使用测试用例,我已经为面包屑组件编写了一个测试用例,但它显示测试用例失败:我在Brower中得到结果,但它显示失败,而测试用例有人能帮助我吗这是我第一次编写测试用例

 FAIL  src/component/__test__/breadcrumb.test.js (20.411 s)
  × renders breadcrumbs correctly (786 ms)
                                                                                                                         
  ● renders breadcrumbs correctly                                                                                        
                                                                                                                         
    useNavigate() may be used only in the context of a <Router> component.

以下是我的面包屑组件代码:

import React from "react";
import {
  Breadcrumbs as MUIBreadcrumbs,
  Link,
  Typography,
} from "@material-ui/core";
import { useNavigate, useLocation } from "react-router-dom";
const Breadcrumbs = () => {
  const navigate = useNavigate();
  const { pathname } = useLocation();
  const pathnames = pathname.split("/").filter(Boolean);
  return (
    <MUIBreadcrumbs aria-label="breadcrumb">
      {pathnames.length ? (
        <Link onClick={() => navigate("/")}>Dashboard</Link>
      ) : (
        <Typography> Dashboard </Typography>
      )}
      {pathnames.map((name, index) => {
        const routeTo = `/${pathnames.slice(0, index + 1).join("/")}`;
        const isLast = index === pathnames.length - 1;
        return isLast ? (
          <Typography key={name}>{name}</Typography>
        ) : (
          <Link key={name} onClick={() => navigate(routeTo)}>
            {name}
          </Link>
        );
      })}
    </MUIBreadcrumbs>
  );
};

export default Breadcrumbs;

这是我写的测试用例:

import React from 'react';
import { render, screen } from '@testing-library/react';
import Breadcrumbs from '../breadcrumb/Breadcrumb';


test('renders breadcrumbs correctly', () => {
  const items = [
    {
      label: 'Dashboard',
      link: '/'
    },
    {
      label: 'Employee',
      link: '/employee'
    }
  ];

  render(<Breadcrumbs items={items} />);

  // Verify that the breadcrumbs are rendered
  expect(screen.getByText('Dashboard')).toBeInTheDocument();
  expect(screen.getByText('Employee')).toBeInTheDocument();

  // Verify that the links are correct
  expect(screen.getByText('Dashboard')).toHaveAttribute('href', '/');
  expect(screen.getByText('Employee')).toHaveAttribute('href', '/employee');
});

推荐答案

如错误消息所示,useNavigate是一个钩子,只能在上下文或<Router>组件中使用.

useNavigate挂钩使用路由组件提供的上下文,因此so your component has to be nested inside of a Router.

Reactjs相关问答推荐

使用setInterval判断数据的时间,然后在过期后从对象中删除;遇到性能问题

Next.js-图像组件加载问题

滚动事件监听器在Next.js客户端组件中不触发

Reactjs中的chartjs和reaction-chartjs-2的问题

TypeError:SearchProduct.get()获得了意外的关键字参数查询'

ReactJS:唯一项目的数量总和

单击按钮不会切换组件(当按钮和组件位于两个单独的文件中时)

Firebase查询返回随机用户数据,而不是过滤后的用户数据

React Js和Firestore中如何将当前ID与集合中的ID查询以仅显示具有相似字段和值的文档-第二部分

将水平滚动视图添加到底部导航选项卡

如何在 React.js 中提取 PDF 的内容?

cypress `cy.now()` Type 'Promise' 没有调用签名

使用 map 循环浏览列表列表中的列表并显示它们

使用 Vite 的 React 中的路由无法正常工作(构建中)

React + i18next + Trans + Prettier:Prettier 最终会在重新格式化 JSX 时 destruct 翻译

React 中的 Slide API Mui 在开始而不是结束时触发侦听器

是什么导致了这个令人惊讶的数组导致 React

React如何在用户登录后等待当前用户数据被获取

如果两个组件在 React 中导入相同的 CSS 文件会发生什么?

如何在组件文件夹内的react 组件文件中导入外部css文件?