cy.getBy*** 不是函数

问题描述 投票:0回答:2

我正在尝试在 Azure 发布管道中运行 Cypress。我安装了本地安装的所有软件包,但是当我运行 Cypress 测试时,我收到几个错误:

TypeError:cy.visit(...).getByText 不是函数

TypeError:cy.getByLabelText 不是函数

TypeError:cy.getByPlaceholderText 不是函数

我已将以下包添加到我的

package.json
devDependencies 部分:

"@testing-library/cypress": "^4.0.4",
"@testing-library/react": "^8.0.4",
"@testing-library/dom": "latest",

有什么想法为什么赛普拉斯返回这些类型错误吗?

这是笔试的例子:

it("can request to join private team", () => {
  const privateTeamId = "fe1fa897-2e90-4ecb-91f9-0c9bb33ef63a";
  cy.get(`[id=${privateTeamId}]`)
    .click()
    .getByText("Request membership")
    .click()
    .getByText("Membership request sent");
});
e2e-testing cypress
2个回答
30
投票

您需要扩展 Cypress 的

cy
命令。

只需将此

import '@testing-library/cypress/add-commands';
行添加到您项目的
cypress/support/commands.js

添加此行后,如果仍然不起作用,请关闭 Cypress 并重新启动。

注意:2020 年以来的过时答案(柏树移动很快),因为

getBy
s 现在已被使用
findBy
s

取代

7
投票

getBy 已被弃用并删除

测试库 + Cypress 之间的集成中不存在

getBy*
查询。

所以我只是从

cy.getByText
更改为
cy.findByText
,一切正常。

根据文档:

注意:不支持 get* 查询,因为对于合理的 Cypress 测试,您需要可重试性,而 find* 查询已经支持这一点。自 v5 起不再需要 query* 查询,并将在 v6 中删除。 find* 完全支持内置 Cypress 断言(删除查询* 的唯一用例)。

https://testing-library.com/docs/cypress-testing-library/intro

© www.soinside.com 2019 - 2024. All rights reserved.