@Vue/test-utilsshallowMount 为 vuetify 组件输出“[Vue 警告]:未知的自定义元素”

Mar*_*eca 5 mocha.js vue.js vuetify.js vue-test-utils

我在 Vue 中的单元测试不仅<v-col>为每个 vuetify 组件输出以下警告:

[Vue 警告]:未知的自定义元素:<v-col> - 您是否正确注册了组件?对于递归组件,请确保提供“名称”选项。

我创建了一个localVue并添加了Vuetify,但这似乎不起作用。这是我的测试用例:

import { shallowMount, createLocalVue } from '@vue/test-utils'
import expect from 'expect'
import ProjetoShow from '../../views/Projeto/ProjetoShow.vue'
import Vuetify from 'vuetify'

describe('ProjetoShow component', () => {
    let wrapper
    let localVue
    beforeEach(() => {
        localVue = createLocalVue()
        localVue.use(Vuetify)
    })

    it('renders correctly', ()=> {
        let vuetify = new Vuetify()
        wrapper = shallowMount(ProjetoShow, {localVue, vuetify})
        expect(wrapper.find('h2').text()).toContain('PROJETO')
    })

})
Run Code Online (Sandbox Code Playgroud)

我的包版本在 package.json

"devDependencies": {
    "@vue/test-utils": "^1.0.0-beta.31",
    "axios": "^0.19.0",
    "cross-env": "^5.1",
    "expect": "^24.9.0",
    "jsdom": "^15.1.1",
    "jsdom-global": "^3.0.2",
    "laravel-mix": "^4.0.7",
    "lodash": "^4.17.13",
    "mocha": "^6.2.0",
    "mochapack": "^1.1.5",
    "resolve-url-loader": "^2.3.1",
    "sass": "^1.15.2",
    "sass-loader": "^7.1.0",
    "vue": "^2.5.17",
    "vue-template-compiler": "^2.6.10"
},
"dependencies": {
    "vue-router": "^3.1.3",
    "vuetify": "^2.2.15",
    "vuex": "^3.1.1"
},
Run Code Online (Sandbox Code Playgroud)

Mar*_*eca 2

我犯了一个错误,将 vuetify 添加到localVue而不是添加Vue。这改变修复了它。根据所使用的版本,这仍然可能输出一些错误。如果出现问题,请更新vuetify@vue/test-utils到最新版本。mocha

import { shallowMount, createLocalVue } from '@vue/test-utils'
import expect from 'expect'
import ProjetoShow from '../../views/Projeto/ProjetoShow.vue'
import Vuetify from 'vuetify'
import VueRouter from 'vue-router'
import Vue from 'vue'
Vue.use(Vuetify)

describe('ProjetoShow component', () => {
    let wrapper
    let localVue
    beforeEach(() => {
        localVue = createLocalVue()
        localVue.use(VueRouter)
    })

    it('renders correctly', ()=> {
        let router = new VueRouter()
        let vuetify = new Vuetify()
        wrapper = shallowMount(ProjetoShow, {localVue, router, vuetify})
        expect(wrapper.find('h2').text()).toContain('PROJETO')
    })

})
Run Code Online (Sandbox Code Playgroud)