keydown - Vue Test Utils,测试中的 keyCode 不再触发 Keydown 事件

标签 keydown vue-test-utils

在测试环境中,将vue-test-utils更新到1.0.0-beta.26或更高版本后,keydown事件不再由keyCode触发,例如:

Vue

  <div @keydown="onKeydown"></div>

脚本

  public onKeydown (event: KeyboardEvent) {
    if(event.keyCode === 13) {
      this.keyName = 'enter'
    } else if(event.keyCode === 67) {
      this.keyName = 'c'
    }
  }

之前的版本,都是以keyCode为参数测试PASS。

// version 1.0.0-beta.25
const wrapper = shallowMount(HelloWorld)
wrapper.find('div').trigger('keydown', { keyCode: 13 })
expect(wrapper.vm.keyName).toBe('enter') // PASS

wrapper.find('div').trigger('keydown', { keyCode: '67' })
expect(wrapper.vm.keyName).toBe('c')  // PASS

版本更新后,我的测试现在失败了。

尝试使用keydown.enter,它适用于enter键,但不适用于“c”键。

// version 1.0.0-beta.26
wrapper.find('div').trigger('keydown.enter')
expect(wrapper.vm.keyName).toBe('enter') // PASS

wrapper.find('div').trigger('keydown.c')
expect(wrapper.vm.keyName).toBe('c')  // FAILED

有什么建议如何使用 a-z 键触发 keydown 事件吗?

最佳答案

您应该将key作为选项传递。来自 official docs

it('Magic character "a" sets quantity to 13', () => {
    const wrapper = mount(QuantityComponent)

    wrapper.trigger('keydown', {
      key: 'a'
    })

    expect(wrapper.vm.quantity).toBe(13)
  })

关于keydown - Vue Test Utils,测试中的 keyCode 不再触发 Keydown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018576/

相关文章:

vue.js - 模拟安装 Hook Jest 测试单元

javascript - 使用 Jest 测试组件时如何定位选择器的第一个子级

vuejs2 - 如何在RouteUpdate导航守卫之前测试vue路由器?

unit-testing - 如何在 Jest 中模拟 i18next 模块

javascript - Opera 中的输入类型文件

Mootools:小键盘 keyup 和 keydown 事件在同一键上返回不同的键值

java - 我的 MouseMotionListener 阻止我的 keyDown 工作

jquery - 不应使用 keydown 事件的“获取 "The ' charCode”属性。该值无意义”jQuery 中的错误

jquery - 使用 jQuery,为什么当我只单击两个键之一时就会调用此函数?

javascript - 如何测试组件中另一个模块的自定义指令