Vue.js 在vue测试utils中的存根上发出带有键修饰符的keydown事件

Vue.js 在vue测试utils中的存根上发出带有键修饰符的keydown事件,vue.js,vue-test-utils,Vue.js,Vue Test Utils,我有一个带有带有.down修改器的keydown事件的自动存根子组件。我想在测试中触发此事件 组件中的某个地方。vue: <child-component @keydown.down="myFn()" /> // I expect the keydown.down event to be triggered: wrapper.find({name: 'child-component'}).vm.$emit('keydown.down') 这不管用。我能够触发事件的唯一方法是删

我有一个带有带有
.down
修改器的keydown事件的自动存根子组件。我想在测试中触发此事件

组件中的某个地方。vue:

<child-component @keydown.down="myFn()" />
 // I expect the keydown.down event to be triggered:
 wrapper.find({name: 'child-component'}).vm.$emit('keydown.down')
这不管用。我能够触发事件的唯一方法是删除修改器
.down
,或者向事件添加
.native
修改器。不幸的是,我无法使用
.native
修饰符

我尝试过的其他事情:

<child-component @keydown.down="myFn()" />
 // I expect the keydown.down event to be triggered:
 wrapper.find({name: 'child-component'}).vm.$emit('keydown.down')
wrapper.find({name:'child component'}).trigger('keydown.down')


wrapper.find({name:'child component'}).vm.$emit('keydown',{keyCode:40})
解决方案是使用键修饰符的
keyCode
提供
KeyboardEvent
作为
$emit
函数的第二个参数。因此,如果我们想触发
keydown.down
事件,我们可以这样做:

wrapper.find({name: 'child-component'}).vm.$emit(
    'keydown', 
    new KeyboardEvent('keydown', {
        keyCode: 40
    })
)