ошибка типа утилиты vue test: this.$moment(…).format не является функцией

#momentjs #sinon #vue-test-utils

#momentjs #sinon #vue-test-utils

Вопрос:

Я использую moment.js и у меня возникли проблемы с издевательством над функцией форматирования, я получаю эту ошибку:

Ошибка типа: this.$moment(…).format не является функцией

может ли кто-нибудь указать мне правильное направление в этом, пожалуйста?

 import { mount, createLocalVue, } from '@vue/test-utils'
import { expect } from 'chai'
import sinon from 'sinon'
import Vuex from 'vuex'
import authorisation from '../../src/components/settings/Authorisation.vue'

const localVue = createLocalVue()
localVue.use(Vuex)
const renewAuthStub = sinon.stub()
localVue.filter('translate', () => {})

describe ('settings authorisation', () => {
  let wrapper
  let store
  let state
  let getters
  let actions

    beforeEach(() => {
      state = {
        authorisation: {
          authorised: '2018-03-18',
          expiry: '03-04-2019',
          canBeExtended: true
        }
      }
      getters = {
        fetchAuth: () => '',
        isLoading: () => false,
        authorisation: () => state.authorisation,
        highlightDates: () => {},
        disabledDates: () => {},
        requestLoading: () => false
      }
      actions = {
        fetchAuth: () => {}
      }
      store = new Vuex.Store({
        state,
        getters,
        actions
      })
      wrapper = mount(authorisation, {
        localVue,
        store,
        mocks: {
          $moment: () => sinon.stub().resolves()
        }
      })
    })

    it('lets user know to reactivate when not authorised', () => {
 

Ответ №1:

Итак, я понял, что использую udateLocale (‘en’, английский), поэтому, как следствие, мне также нужно было использовать это в моем тесте, поэтому необходимо было добавить следующее:

 import { mount, createLocalVue, } from '@vue/test-utils'
import { expect } from 'chai'
import sinon from 'sinon'
import Moment from 'moment'
import English from '../../src/i18n/moment/en'
import Vuex from 'vuex'
import Vue from 'vue'
import authorisation from '../../src/components/settings/Authorisation.vue'

const localVue = createLocalVue()
localVue.use(Vuex)
const renewAuthStub = sinon.stub()
localVue.filter('translate', () => {})
Vue.prototype.$moment = Moment
Moment.updateLocale('en', English)

describe ('settings authorisation', () => {