javascript - Cypress getByTestId、queryByTestId、findByTestId 检查元素是否不存在

标签 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个有什么区别吗?

谢谢

最佳答案

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

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

  • This is useful for asserting an element that is not present.



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

    关于javascript - Cypress getByTestId、queryByTestId、findByTestId 检查元素是否不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58995950/

    相关文章:

    javascript - 如何在 javascript 中的 touchstart 检测两个手指?

    java - 模拟子服务的 REST 请求

    ruby-on-rails - Rspec:在 Devise::OmniauthCallbacksController 子类中测试重定向

    grails - 在集成测试中获取服务器 URL?

    javascript - 为什么这个简单的Js函数在定义后加了()却没有返回值/对象?

    javascript - 从动态生成的表单中响应访问状态,多层次深度

    C - 测试主要功能的最简单方法是什么?

    java - 为什么 EclEmma 不使用 @RunWith(PowerMockRunner.class) 的测试覆盖代码

    javascript - 如何使用 rest(使用 CAML)在共享点列表中的超链接列上应用过滤器?

    testing - 移动网站自动化