微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 NextJS useRouter 函数测试 Cypress 组件

如何解决使用 NextJS useRouter 函数测试 Cypress 组件

我的导航栏组件依赖于 useRouter 提供的 nextjs/router 函数来设置活动链接的样式。

我正在尝试使用 Cypress 测试这种行为,但我不确定我应该如何组织它。 Cypress 似乎不喜欢 getRoutePathname() 并且在我的测试环境中返回 undefined。

这是我要测试的组件:

import Link from 'next/link'
import { useRouter } from 'next/router'

function getRoutePathname() {
  const router = useRouter()
  return router.pathname
}

const Navbar = props => {
  const pathname = getRoutePathname()

  return (
    <nav>
      <div className="mr-auto">
        <h1>Cody Bontecou</h1>
      </div>
      {props.links.map(link => (
        <Link key={link.to} href={link.to}>
          <a
            className={`border-transparent border-b-2 hover:border-blue-ninja 
            ${pathname === link.to ? 'border-blue-ninja' : ''}`}
          >
            {link.text}
          </a>
        </Link>
      ))}
    </nav>
  )
}

export default Navbar

我有 Cypress 组件测试运行器的骨架设置,并且能够在我硬编码 pathname 时加载组件,但是一旦我依赖 useRouter,测试运行器就不再是开心。


import { mount } from '@cypress/react'

import Navbar from '../../component/Navbar'

const LINKS = [
  { text: 'Home',to: '/' },{ text: 'About',to: '/about' },]

describe('<Navbar />',() => {
  it('displays links',() => {
    mount(<Navbar links={LINKS} />)
  })
})

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?