javascript - Vue + Jest 全局配置转移到规范文件中

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

我正在使用 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 插件(以及其他出现的插件......)构建到每个测试文件中?

最佳答案

您可以尝试将 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' }
})

关于javascript - Vue + Jest 全局配置转移到规范文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58024549/

相关文章:

c# - 没有预期异常的测试

Cmocka 测试不显示任何输出

mysql - 基本 CRUD 返回 404 (MySQL + Express + VueJS + NodeJS)

javascript - 如何在 Vue 中对包含 2 个字段的数组进行排序?

javascript - 完成我的第一个 AJAX 调用 - 困惑为什么我的结果根本不显示

javascript - 使用表单数据而不是带有 ajax 的查询字符串

javascript - 延迟加载js不起作用。遵循指示。抓头。见链接

android - 在 Android Marshmallow 中启用模拟位置

vue.js - 更改数据的值,但数据没有更新

javascript - 如何使 tx.executeSql() 函数与 async/await 同步?