【问题标题】:How to check if an jQuery event is bound to an element from a cypress test如何检查 jQuery 事件是否绑定到 cypress 测试中的元素
【发布时间】:2020-05-15 10:54:15
【问题描述】:

我正在测试一些使用 jQuery 绑定点击事件的代码,但在绑定点击事件之前运行的测试出现问题。

我想避免在测试中放置任意等待,所以我试图找到一些方法来检查事件是否被绑定,然后我可以在做出测试断言之前等待。

我在控制台中想出了这个超级肮脏的方法:

$._data($('.element-being-tested')[0], 'events' ).click[0].handler.toString().includes('something I know is in the function')

但我无法将其转移到 cypress,因为 Cypress.$._data() 不存在。

如何检查查询事件是否被绑定?

【问题讨论】:

    标签: jquery cypress


    【解决方案1】:

    您可以使用 Cypress 重试能力来继续测试事件的影响,而不是直接测试事件是否存在,例如

    cy.get('.element-that-changes-after-event').then($target => {
      // use closure to get a reference to changing element
    
      cy.get('.element-being-tested')
        .should($clickable => {       // .should(cb) callback function will be retried
    
          $clickable.click()
          expect($target.text()).to.equal('Content that appears after click event')
    
        });
    
    });
    

    Assert class name contains heading-

    可能有更简单的方法可以做到这一点,请发布您的测试。

    【讨论】:

      猜你喜欢
      • 2010-11-17
      • 1970-01-01
      • 2022-01-14
      • 1970-01-01
      • 2016-07-02
      • 1970-01-01
      • 2011-09-15
      • 2014-03-26
      • 1970-01-01
      相关资源
      最近更新 更多