我正在尝试在 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");
});
您需要扩展 Cypress 的
cy
命令。
只需将此
import '@testing-library/cypress/add-commands';
行添加到您项目的 cypress/support/commands.js
添加此行后,如果仍然不起作用,请关闭 Cypress 并重新启动。
注意:2020 年以来的过时答案(柏树移动很快),因为
getBy
s 现在已被使用 findBy
s 取代
测试库 + Cypress 之间的集成中不存在
getBy*
查询。
所以我只是从
cy.getByText
更改为 cy.findByText
,一切正常。
根据文档:
注意:不支持 get* 查询,因为对于合理的 Cypress 测试,您需要可重试性,而 find* 查询已经支持这一点。自 v5 起不再需要 query* 查询,并将在 v6 中删除。 find* 完全支持内置 Cypress 断言(删除查询* 的唯一用例)。
https://testing-library.com/docs/cypress-testing-library/intro