我正在try 测试我的锚标签.一旦我点击它,我想看看window.location.href是不是我所期望的.

我try 渲染锚,单击它,然后测试window.location.href:

test('should navigate to ... when link is clicked', () => {
  const { getByText } = render(<a href="https://test.com">Click Me</a>);

  const link = getByText('Click Me');

  fireEvent.click(link);

  expect(window.location.href).toBe("https://www.test.com/");
});

我期待着考试能通过,但实际上是关上了windows .地方href仅为"http://localhost/",这意味着无论出于何种原因,它都不会得到更新.我甚至试着用await wait来包装我的expect,但也没用.我找不到太多关于react-testing-library测试锚的信息.也许还有比我现在做的更好的方法来测试它们.?‍♂️

推荐答案

Jest使用jsdom来运行其测试.jsdom正在模拟浏览器,但它有一些局限性.其中一个限制是,您无法更改位置.如果你想测试你的链接是否有效,我建议判断<a>href属性:

expect(screen.getByText('Click Me').closest('a')).toHaveAttribute('href', 'https://www.test.com/')

Reactjs相关问答推荐

客户端组件中服务器组件的两难境地

避风港访问端口以包含Reaction应用程序

根据另一个Select中的选定值更改Select中的值

错误./src/TopScroll.js 31:21-31导出';(作为';随路由导入)在';Reaction-Router-Dom';中找不到

状态更改时的rtk查询触发器

使用 React + Vite 范围化 CSS

tRPC/react-query,在所有查询完成之前,组件不会收到任何 useQuery 的结果

验证 Yup 中的对象项

将 useRef 与 useImperativeHandle 一起使用时,React 不会重新渲染

为 Next.js 应用程序目录中的所有页面添加逻辑的全局文件是什么?

Next.js 和理智 | npm run build 时预渲染页面/时发生错误

redux 工具包使用中间件构建器函数时,必须返回一个中间件数组

基于标记名的博客详细信息分组没有发生

使用 axios 响应路由 Dom 操作

当我在其中传递 2 个箭头函数时,为什么我的 onClick 事件不适用于 useState

从输入中获取数字时,react 计数器不会增加

无法重用我的组件,它只显示 1 次

为什么我在运行一些 npm react 命令时会收到这些警告?

如何在 React 中制作动画?

用户输入值时更改值