【问题标题】:Vue Test Utils, Keydown event no longer triggered by keyCode in testVue Test Utils, Keydown 事件不再由测试中的 keyCode 触发
【发布时间】:2019-05-07 08:35:16
【问题描述】:

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

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 事件有什么建议吗?

【问题讨论】:

    标签: keydown vue-test-utils


    【解决方案1】:

    您应该将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)
      })
    

    【讨论】:

    • 谢谢。我想我应该避免使用event.keyCode,它一直是deprecated
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 2018-10-28
    • 2019-06-01
    • 2021-04-05
    • 2019-09-08
    • 2021-04-03
    • 2021-11-26
    相关资源
    最近更新 更多