我正在使用Cypress测试文本字段是否正确显示输入的文本.

cy.get('.creation-name').should('not.have.text');
const testName = 'Test name';
cy.get('.creation-name').type(`${testName}`);

TextField是一个MUI组件,而这是一个Reaction项目.

<div className="create-name">
    <TextField
        id="Name"
        label="Create name"
        onChange={(event) => setName(event.target.value)}
    />
</div>

我可以从视频中看到文本输入得很好,但当我try 判断它是否在那里时,它失败了.我try 了多个不同的行来获取测试文本值,包括以下几行:

//got AssertionError for all of these
cy.get('.creation-name').invoke('val').should('equal', 'Test name');//expected '' to equal Test name
cy.contains(`${testName}`).should('have.text', `${testName}`);//expected '' to equal Test name
cy.get('[id="Name"]').should('have.text', `${testName}`);//expected '' to equal Test name
cy.get('.creation-name').invoke('text').should('equal', 'Test');//expected Create name to equal Test name
cy.get('.creation-name').should('have.text', `${testName}`);//expected Create name to equal Test name

似乎我什么都没得到,或者我把目标对准了标签.这是我第一次使用 cypress ,所以我希望我没有遗漏任何明显的东西.

推荐答案

try 从子对象<input>中取取值.

cy.get('.creation-name')  // or .create-name, maybe a typo in the question
  .find('input')
  .invoke('val')
  .should('equal', 'Test name')

contains()和文本相关的命令不起作用,因为它是一个输入,它在内部保存值.

文本命令仅适用于标签之间有文本的元素,如<div>Test text</div>.

Reactjs相关问答推荐

Tailwind不使用@apply classes构建,并强制使用类似于移动的viewport

使用Reaction-Hook-Form时未激发React.js onBlur事件

同一文件中前端和后端的Nginx配置

获取未捕获的错误:Gatsby生产版本上的最小化react 错误#418

在每页上应用字体-NextJS

如何使ionic 面包屑在州政府条件下可点击?

安装使用环境的BIT组件的依赖项

为什么在页面重新加载时Location.State变得未定义?

如何在React组件中自动更新图表数据?

使用 React + Vite 范围化 CSS

如何使用 App Router 和服务器组件在 Next.js 13 中实现分页

如何根据ReactJS中元素列表中的布尔值仅显示一次值

提前输入错误:选项类型上不存在属性名称

如何在next.js 13中仅在主页导航栏上隐藏组件?

在遵循 react-navigation 的官方文档时收到警告消息

antd 找不到 comments

如何检索包含动态段的未解析路径?

将 Material UI 菜单渲染为

React 检测哪些 props 在 useEffect 触发器上发生了变化

运行开发服务器时如何为 Vite 指定运行时目录