【问题标题】:Vue + Jest global config carrying over into spec filesVue + Jest 全局配置转移到规范文件中
【发布时间】:2020-01-21 06:53:28
【问题描述】:

我正在使用 VueJS 和 Jest 对我的组件进行单元测试。

我还在使用 Bootstrap Vue 库进行样式设置。我需要在我的 Jest 测试中使用这个插件,以删除一些关于未知插件的控制台警告。

我已经创建了一个安装文件:

import { createLocalVue } from '@vue/test-utils'
import BootstrapVue from 'bootstrap-vue'

const localVue = createLocalVue()

localVue.use(BootstrapVue)

并配置 Jest 在每次测试之前使用它。

setupFiles: ['<rootDir>/tests/unit/setup']

但是,要从控制台中删除警告,我需要在安装组件时使用localVue 实例:

const wrapper = shallowMount(MyComponent, {
      localVue,
      propsData: { value: 'someVal }
    })

但是,我看不到将在setup.js 中创建的localVue 实例放入测试规范文件中。

如果我这样做:

import Vue from 'vue'
import BootstrapVue from 'bootstrap-vue'

Vue.use(BootstrapVue)

它工作正常,但这很糟糕,因为我们不应该在 Jest 测试中使用 Global Vue 实例。

有没有办法做我想做的事,还是我必须在每个测试文件中构建 Bootstrap Vue 插件(以及出现的其他插件......)?

【问题讨论】:

    标签: javascript unit-testing vue.js jestjs vue-test-utils


    【解决方案1】:

    您可以尝试将localVue 变量分配为setupFiles 中的全局变量。这将允许您在每个测试中访问 localVue 变量,如下所示:

    import { createLocalVue } from '@vue/test-utils'
    import BootstrapVue from 'bootstrap-vue'
    
    global.localVue = createLocalVue()
    
    global.localVue.use(BootstrapVue)
    

    然后在你的测试中像这样使用它:

    const localVue = global.localVue
    
    const wrapper = shallowMount(MyComponent, {
      localVue,
      propsData: { value: 'someVal' }
    })
    

    【讨论】:

    • 太棒了!这行得通。我提供了一个轻微的编辑来让它工作。我无法在配置中使用 global.localVue,但如果我先创建一个可以工作的常量。
    • @MattBoothDev 很高兴它成功了,我接受了你的编辑;)
    猜你喜欢
    • 2018-06-27
    • 2022-06-16
    • 1970-01-01
    • 2019-11-22
    • 2020-08-16
    • 2022-11-24
    • 2021-09-19
    • 2020-11-23
    • 2013-03-23
    相关资源
    最近更新 更多