Vue 2 怎么在单元测试中通过 Vue Test Utils 模拟组件事件触发

梦杰酱_2727

梦杰酱_2727

2026-08-29

897人浏览

原创

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

vue 2 怎么在单元测试中通过 vue test utils 模拟组件事件触发

在 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-composition-api-best-practices

Vue 3 组合式 API 与

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Vue 教程
Vue 教程

共42课时 | 17.2万人学习

国外Web开发全栈课程全集
国外Web开发全栈课程全集

共12课时 | 1.4万人学习

Vue.js 微实战--十天技能课堂
Vue.js 微实战--十天技能课堂

共18课时 | 1.7万人学习