Не удается проверить компонент Vue, так как экземпляр Vue не определен
У меня есть приложение Vue, которое использует используемую аналитику Vue, которая создает this.$ga.page
для страницы для отслеживания. Теперь мне нужно проверить мой компонент, используя Jest, но он говорит this.$ga.page
не определена. Я инициализирую Vue Analytics в main.js
.
Как включить main.js
перед компонентом в тестовом файле? Я знаю, что нам нужно добавить это в beforeEach
main.js
Мой тест на домашнюю страницу
import VueAnalytics from 'vue-analytics'
Vue.use(VueAnalytics, {
id: 'UA-150437966-1'
})
import { mount } from '@vue/test-utils'
import Homepage from '../../src/Pages/Homepage'
describe('Homepage', () => {
const wrapper = mount(Homepage)
it('has a button', () => {
expect(wrapper.contains('button')).toBe(true)
})
})
отрывок
Homepage.vue
Ошибка, которую я получаю
created: function() {
//analytics
this.$ga.page({
page: "/",
title: "Home page",
location: window.location.href
});
}
};
Ответы - Не удается проверить компонент Vue, так как экземпляр Vue не определен / Can't Test Vue Component because Vue instance not defined

21.10.2019 07:57:46
Vue Test Utils рекомендует настроить ваши плагины в localVue
чтобы избежать загрязнения глобального Vue. Вот как это будет выглядеть:
import { localVue, mount } from '@vue/test-utils'
import Homepage from '@/components/Homepage'
localVue.use(VueAnalytics, { id: 'UA-150437966-1' })
describe('Homepage', () => {
let wrapper = null
beforeEach(() => {
wrapper = mount(Homepage, {
localVue,
})
})
// ...
})
С другой стороны, если в ваших тестах не имеет значения, что глобальный Vue изменен, вы можете настроить свой Jest 23.X окружение с setupTestFrameworkScriptFile
:
// jest.config.js
module.exports = {
setupTestFrameworkScriptFile: '<rootDir>/tests/jest-setup.js',
}
И в вашем установочном файле вы можете инициализировать Vue Analytics:
// <rootDir>/tests/jest-setup.js
import Vue from 'vue'
import VueAnalytics from 'vue-analytics'
Vue.use(VueAnalytics, {
id: 'UA-150437966-1'
})