vue 2 单元测试中模拟事件的核心是 trigger 触发交互并用 emitted() 断言 $emit:trigger 模拟 click/input 等事件(需 await 等待异步更新),emitted() 检查事件是否发出、次数及参数,注意避免直接调用方法或依赖内部状态。

在 Vue 2 的单元测试中,用 Vue Test Utils 模拟组件事件触发,核心是两步:一是通过 trigger 方法模拟用户交互(如 click、input),二是用 emitted() 断言组件是否按预期调用了 $emit。
用 trigger 模拟点击、输入等行为
Vue Test Utils 的 trigger 方法可模拟 DOM 事件,触发组件内部的事件监听器。它会同步执行事件回调,但注意:若回调中修改响应式数据或触发异步操作,DOM 更新是异步的,需配合 await 等待更新完成。
- 点击按钮:
await wrapper.find('button').trigger('click') - 输入文本:
await wrapper.find('input').setValue('hello')(setValue内部已封装trigger('input')) - 提交表单:
await wrapper.find('form').trigger('submit') - 支持自定义事件类型,如
trigger('custom-event'),但前提是组件模板中已绑定对应监听器(如@custom-event)
用 emitted() 验证 $emit 是否发生
emitted() 返回一个对象,记录组件实例所有被触发的自定义事件及其参数。它不依赖 DOM,只捕获 this.$emit 调用。
vue-composition-api-best-practices
Vue 3 组合式 API 与
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程
最新文章
