我有一个关于输入的指令.我想测试一下这个指令.唯一的问题是我找不到如何测试输入是否集中

这是我的简单模拟组件

 <template>
  <div v-directive>
    <input/>
  </div>
</template>

这是我的指示:

import Vue from 'vue'

export const focusInput = () => {
  return {
    inserted(el: any) {
      el.getElementsByTagName('input')[0].focus()
    }
  }
}

export default Vue.directive('focus-input', focusInput())

这是我的测试:

import Vue from 'vue'
import { mount , createLocalVue} from '@vue/test-utils'

import FocusInputMock from './mockComponents/FocusInputMock.vue'
import {focusInput} from '@/directives/focusInput';

const localVue = createLocalVue()

localVue.directive('directive',  focusInput())


test('update content after changing state', () => {
  const wrapper = mount(FocusInputMock, {
    localVue
  })
  Vue.nextTick(function () {
    expect(wrapper.find('input')) // I have to expect for this input to be focused
  });
})

有人有什么 idea 吗?我一直在读Jest和Vue utils文档,但没有成功.

推荐答案

安装模拟组件时,通过{ attachToDocument: true }

试试这个:

let input = wrapper.find('input').element
expect(input).toBe(document.activeElement);

Vue.js相关问答推荐

获取深度嵌套对象时无法读取空/未定义的属性

更新 Shopware 管理 CMS 组件中的编辑器视图

vue3 + pinia:如何从?store 中获取一个值

是否可以将 nuxt3 与类星体框架一起使用

通过元素加中的正则表达式输入电话号码格式

nuxt.js - 预加载 .woff 字体加载为@font-face

vuejs:将props传递给javascript中的组件?

Vue + Webpack 构建显示空白页面

Vuejs中的条件a href

如何将 ASP.NET Core 2.1 与 Vue CLI 3 集成?

Django Rest 框架、CSRF 和 Vue.js

为什么 vue 文档说 refs 不是响应式的,而实际上它们是响应式的

在组件外使用 VueI18n 的问题

Vuetify 2 个工具栏和 1 个导航抽屉,navigation drawer导航抽屉上方有 1 个工具栏

如何在 Vuex 中获取 Vue 路由参数?

从 vue.js 中的 store 获得的计算(computed)属性的设置器

在找不到图像源时设置替代图像

简单的点击功能不触发

偶数行格式化

单击 v-select 项目时如何获取对象而不是单个值?