Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vue.js @Vue/测试utils shallowMount输出;[Vue warn]:未知自定义元素“;用于vuetify组件_Vue.js_Mocha.js_Vuetify.js_Vue Test Utils - Fatal编程技术网

Vue.js @Vue/测试utils shallowMount输出;[Vue warn]:未知自定义元素“;用于vuetify组件

Vue.js @Vue/测试utils shallowMount输出;[Vue warn]:未知自定义元素“;用于vuetify组件,vue.js,mocha.js,vuetify.js,vue-test-utils,Vue.js,Mocha.js,Vuetify.js,Vue Test Utils,Vue中的我的单元测试不仅为而且为每个vuetify组件输出以下警告: [Vue warn]:未知自定义元素:-是否注册了 组件是否正确?对于递归组件,请确保提供 “名称”选项 我创建了一个localVue并添加了Vuetify,但这似乎不起作用。这是我的测试用例: import { shallowMount, createLocalVue } from '@vue/test-utils' import expect from 'expect' import ProjetoShow from '

Vue中的我的单元测试不仅为
而且为每个vuetify组件输出以下警告:

[Vue warn]:未知自定义元素:-是否注册了 组件是否正确?对于递归组件,请确保提供 “名称”选项

我创建了一个
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')
    })

})
我的包在
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"
},

在Vuetify的文档中,他们在
描述
块中声明
让Vuetify
,然后在每个
之前的
中,将该变量分配给一个
新Vuetify()


我看不到您在测试代码中的任何地方实际初始化Vuetify,所以这里可能需要这样做。

我犯了一个错误,将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')
    })

})

我找到了两种不同的解决方案:

第一,在测试文件中注册vuetify(目前我还没有找到全局声明的方法)

第二,使用特定的vuetify组件向包装器添加存根

wrapper = shallowMount(ProjetoShow, {stubs: ['v-col']})

编辑,我发现全局声明的解决方案是必要的,在tests文件夹中创建一个文件
setup.js
,并在测试配置文件中添加路径,如果在jest.config.js中添加
setupFiles:['./tests/setup.js']

我在vuetify docs中尝试了该解决方案,但它仍然不起作用。您是否能够像现在这样用您的项目创建一个公共git回购?或者更确切地说,只是相关文件?它现在起作用了。我犯了一个错误,将Vuetify添加到localVue而不是Vue实例。Vuetify文档是正确的。我更改了localVue。使用(Vuetify)从“Vue”导入Vue;Vue.use(Vuetify)@马塞洛丰塞卡很高兴你能弄明白。请将该信息发布为答案,并将其标记为已接受,以便任何其他遇到此问题的人都可以快速获得答案。快乐编码!我一直试图将其传递到我的安装文件,但没有成功。它向我提供了错误UnhandledPromisejectionWarning和SyntaxError:从“Vuetify”导入Vuetify的意外标识符。不知道为什么要从“Vuetify/lib”导入Vuetify,所以我在插件文件中有它,但在setup.js中不适用于我,请在测试文件中将它声明为有效,它应该有效。。
wrapper = shallowMount(ProjetoShow, {stubs: ['v-col']})