You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

2021年Vue Cli 2下Vuetify插件Jest测试出现未知自定义元素错误

解决方案

根因说明

你已在全局注册了Vuetify插件,但Vue Test Utils的测试挂载上下文不会自动继承全局插件实例,需要手动传入Vuetify实例才能让组件识别所有v-开头的Vuetify内置组件。

修复步骤

1. 修改setup.js配置

在原有注册逻辑基础上,导出实例化的Vuetify对象:

import Vue from "vue";
import Vuetify from "vuetify";
Vue.config.productionTip = false;
Vue.use(Vuetify);

// 新增:实例化Vuetify并导出
const vuetify = new Vuetify()
export default vuetify

2. 测试用例挂载时传入Vuetify实例

编写单元测试时,在mount/shallowMount的配置项中传入导出的vuetify实例即可:

import { mount } from '@vue/test-utils'
import 待测试组件 from '@/components/你的组件路径.vue'
import vuetify from './setup' // 按你实际的setup.js路径调整

describe('待测试组件', () => {
  it('可正常渲染', () => {
    const wrapper = mount(待测试组件, {
      vuetify // 必须传入该实例
    })
    expect(wrapper.exists()).toBeTruthy()
  })
})

可选快速修复(无需渲染Vuetify逻辑时使用)

如果你不需要测试Vuetify组件本身的交互逻辑,只想消去组件识别报错,可以直接在jest.config.js中配置自动stub所有Vuetify组件:

module.exports = {
  preset: "@vue/cli-plugin-unit-jest",
  setupFiles: ["./tests/unit/setup.js"],
  globals: {
    "vue-jest": {
      // 自动stub所有用到的vuetify组件,可按需新增
      stubs: {
        "v-app-bar": true,
        "v-row": true,
        "v-col": true
      }
    }
  }
};

额外注意事项

请确保你的@vue/test-utils版本为1.x版本,2.x以上版本仅适配Vue3,无法兼容Vue2 + Vuetify2.x的技术栈。

内容的提问来源于stack exchange,提问作者Mohamed Raza

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.22 01:36:05