vue.js - 在 vue-test-utils 中的存根上使用 key 修饰符发出 keydown 事件
问题描述
我有一个带有.down
修饰符的 keydown 事件的自动存根子组件。我想在我的测试中触发这个事件。
在 component.vue 中的某处:
<child-component @keydown.down="myFn()" />
在 component.spec.js 中的某处:
// I expect the keydown.down event to be triggered:
wrapper.find({name: 'child-component'}).vm.$emit('keydown.down')
这行不通。我能够触发事件的唯一方法是删除修饰符.down
,或者.native
向事件添加修饰符。不幸的是,我无法使用.native
修饰符。
我尝试过的其他事情:
wrapper.find({name: 'child-component'}).trigger('keydown.down')
wrapper.find({name: 'child-component'}).vm.$emit('keydown', {keyCode: 40})
解决方案
解决方案是提供 aKeyboardEvent
作为$emit
函数的第二个参数,keyCode
以及键修饰符的 the。所以如果我们想触发一个keydown.down
事件,我们可以这样做:
wrapper.find({name: 'child-component'}).vm.$emit(
'keydown',
new KeyboardEvent('keydown', {
keyCode: 40
})
)
推荐阅读
- mongodb - 尝试插入 MongoDB 集合时,键 $date 不能以 '$' 开头
- mysql - 如何将此本机 SQL 查询转换为我的 java 应用程序的 jpa 查询
- json - Plotly-Dash 如何使用 dcc.Input 将输入作为 JSON 序列化变量传递?
- python - QML 图标和图像看起来模糊
- r - 使用 magrittr 复合赋值管道运算符 %<>% 重写代码
- python - 如何使用自定义顺序对 Seaborn 热图的列进行排序?
- php - 无需重新加载即可提交表单并发布到 php 脚本
- javascript - 如何从 Javascript 将 UTC 时间戳注入隐藏的 HTML 表单字段
- rust - 如何计算函数的输出寿命?
- c++ - 用两个不同的瓷砖填充一个 2*n 的房间