Глобальный конфиг Vue + Jest перенесен в спецификации файлов - PullRequest
2 голосов
/ 20 сентября 2019

Я использую 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 }
    })

Однако я не могупосмотрите, чтобы получить экземпляр localVue, созданный в setup.js, в файлы тестовых спецификаций.

Если я сделаю это:

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

Vue.use(BootstrapVue)

Работает нормально, но это плохо, так как нам не следует использовать экземпляр Global Vue в тестах Jest.

Есть ли способ сделать то, что я хочу, или мне нужно будет встроить плагины Bootstrap Vue (и другие по мере их поступления ...) в каждый тестовый файл?

1 Ответ

2 голосов
/ 20 сентября 2019

Вы можете попытаться назначить переменную 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' }
})
...