我有一个Vue 2.0组件,它使用Vuetify中的菜单组件.我正在使用官方vue-test-utils在测试期间安装我的组件.

我面临的问题是,菜单组件将"菜单"附加到HTML主体(在组件的范围之外).正因为如此,我无法像使用组件中的任何其他元素那样使用wrapper.find('.menu')访问它.

使用vue test utils访问附加到主体的元素有什么好方法吗?

Update

我的组件在这一点上看起来非常像这个Vuetify codepen example

我安装的组件如下:

import Vuex from 'vuex'
import Vuetify from 'vuetify'
import AuthenticatedUser from './AuthenticatedUser'
import { mount, createLocalVue } from 'vue-test-utils'

const localVue = createLocalVue()
localVue.use(Vuex)
localVue.use(Vuetify)

describe('AuthenticatedUser', () => {
  let getters
  let store

  beforeEach(() => {
    getters = {
      getUserDetails: () => { name: 'John Doe' }
    }

    store = new Vuex.Store({ getters })
  })

  it('should open menu when button is clicked', () => {
    const wrapper = mount(AuthenticatedUser, { store, localVue })

    // In here 'wrapper' won't have access to the dropdown menu,
    // since it has been added directly to the HTML body
  })
})

推荐答案

在组件定义中,将ref属性添加到菜单的内容中,在您的例子中是<v-card>组件:

<v-menu>
  <v-btn slot="activator"></v-btn>
  <v-card ref="menu"></v-card>
</v-menu>

然后,您将能够通过测试用例中的wrapper.vm.$refs.menu访问<v-card>个组件.

Vue.js相关问答推荐

Nuxt.js i18n不提供默认区域设置中的页面而不重定向

使用插槽的VUE 3工作台

传单 vue3 组件变体打开错误的标记 - 单击时弹出

vuetify/mdi 不显示图标

v-on 的 .native 修饰符仅在组件上有效,但在 标签上使用

vue 3 中范围样式和深度样式的问题

更改 Vuetify 轮播高度

从数据库中删除后,Vue.js $remove 不删除元素

如何使用 vue.js 获取本地 html 文件?

用 axios 搜索:新字符时取消之前的请求

Vue test-utils 如何测试 router.push()

Vue router路由,Root Vue 没有数据?

Vue 组件 Vue-Instant

Vue代理设置不起作用

Vuetify v-btn 路由活动类问题

即使在生产模式下构建,VueJS 也会显示开发模式开发模式消息

如何让 Vue 在 shadow dom 中工作

如何在 vuejs 中的基于类的组件中编写计算设置器

使用 vuex-persistedstate 仅使一个模块持久化

如何修复套接字 io 中的 400 错误错误请求?