Vue Unit Testing: Использование функций, неправильно импортированных в компонент - PullRequest
0 голосов
/ 05 февраля 2019

Я пытаюсь преобразовать юнит-тестирование в старое приложение Vue, которое мы разработали.Одна вещь, которая была установлена ​​моим старшим, заключается в том, что я не могу изменить какой-либо код в реальном приложении (это вызывает слишком большую головную боль для меня).

Теперь я пытаюсь проверить, является ли методактивируется, когда пользователь нажимает кнопку:

import { mount, shallowMount, createLocalVue } from '@vue/test-utils';
import { expect } from 'chai';
import Vuex from 'vuex';
import sinon from 'sinon';
import AccountCreation from '@/components/.../AccountCreation.vue';
import createStoreConfig from '@/store/create-store-config';

const localVue = createLocalVue();
localVue.use(Vuex);

const storeConfig = createStoreConfig();
const store = new Vuex.Store(storeConfig);
store.state.selectedMemberType = 'writer';

describe('Account Creation', () => {
  const wrapper = shallowMount(AccountCreation, {
    methods: {
    },
    store,
    localVue,
  });
  it('should return a writer argument when the validate username button is clicked', () => {
      let ga = () => {console.log('test')}
      const button = wrapper.find('#accountCreation .col-xl-5 .card span ').trigger('click')
  })
});

Я знаю, что в этом тесте нет expect.И фактический метод выглядит следующим образом.Я знаю, что метод запускается, но mocha / chai выдает ошибку, прежде чем он сможет установить успех.

Я не могу поделиться реальным кодом, но в основном он будет делать что-то вроде этого:

validateUsername(fieldName) {
  ga('send', 'event', 'page' 'action' 'error')
}

В коде есть что-то еще, но он не выполняется, поскольку ga при запуске выдает ReferenceError.Google Analytics странным образом импортирован в main.js, поэтому я не могу заглушить его обычным способом sinon или mocha.

1 Ответ

0 голосов
/ 06 февраля 2019

Вы можете смоделировать ga через объект global (т. Е. Установить global.ga):

it('should return a writer argument when the validate username button is clicked', () => {
  global.ga = () => {console.log('test')}
  const button = wrapper.find('#accountCreation .col-xl-5 .card span ').trigger('click')
})

Обратите внимание, что эта модификация global.ga сохраняется для каждого теста в файле и не распространяется на всефайлы.

...