Cypress无法触发document.addEventListener绑定的keydown事件怎么解决?
你当前的测试代码不生效的核心原因是,业务代码里的handleLeftRightKeys是通过判断event.key的值来执行对应逻辑,但你触发事件时仅传入了keyCode参数,没有传入匹配的key值,所以判断分支无法命中,自然不会执行prev和next方法。
方案1:模拟真实键盘事件触发(推荐)
直接触发绑定在document上的键盘事件,传入和业务判断对齐的key参数即可:
// 触发右方向键,调用next() cy.document().trigger('keydown', { key: 'ArrowRight' }) // 触发左方向键,调用prev() cy.document().trigger('keydown', { key: 'ArrowLeft' })
注意:触发前要确保componentDidUpdate中绑定事件的判断条件已经满足,事件监听器已成功挂载到document上,避免提前触发导致无响应。
方案2:直接调用组件实例方法(仅类组件适用)
如果不需要验证事件绑定逻辑,只想验证prev/next的执行逻辑,可以直接拿到组件实例调用对应方法:
cy.mount(<你的组件名 {...组件props} />) .its('instance') .then(instance => { // 直接调用next方法 instance.next() // 直接调用prev方法 instance.prev() })
内容的提问来源于stack exchange,提问作者Anand Verdhan
相关产品推荐
相关产品推荐

