赛普拉斯的getByTestId,queryByTestId,findByTestId,以检查元素是否不存在

时间:2019-11-22 14:09:18

标签: javascript testing integration-testing cypress end-to-end

我正在尝试使用Cypress和testing-library / cypress检查DOM树中是否不存在元素。

如果我尝试进行cy.getByTestId("my-button").should("not.exist"),则测试失败,因为它找不到元素。

如果我做cy.findByTestId("my-button").should("not.exist"),也会由于超时而失败。

如果我执行cy.queryByTestId("my-button").should("not.exist")

,则该测试确实有效

cy.get('[data-testid="my-button"]').should("not.exist")

有人可以解释一下这4个之间的区别吗。

谢谢

1 个答案:

答案 0 :(得分:2)

https://testing-library.com/docs/dom-testing-library/api-queries

  • getBy如果找不到该元素,则会抛出错误
  • findBy如果找不到元素,将返回并拒绝Promise。
  • 如果没有找到元素,
  • queryBy将返回null:

这对于断言不存在的元素很有用。

看来queryBy是解决此问题的最佳选择