#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', () => {