Не удается проверить компонент Vue, так как экземпляр Vue не определен

Не удается проверить компонент Vue, так как экземпляр Vue не определен

20.10.2019 03:29:19 Просмотров 52 Источник

У меня есть приложение 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

Является ответом!
tony19

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'
})
Закрыть X