День добрый. Может ли мне кто-нибудь подсказать, как протестировать асинхронный action в хранилище?
Имеется такой модуль хранилища (упрощенно):
import API_Library from '@/API'
import * as types from './mutation-types.js'
export default: {
state: {
items: []
},
getters: {
getItems: state => {
return state.items
}
},
mutations: {
[types.GET_ITEMS]: (state, data) => {
state.items = data
}
},
actions: {
[types.GET_ITEMS]: async (state) => {
const ResponseData = await API_Library.feeds.feedUrls.list()
state.commit(types.GET_ITEMS, ResponseData)
return(true)
}
}
}
Все части этого модуля я протестировал успешно с помощью Mocha+Chai. Но с действием возникла проблема, которая заключается в том, что в данном модуле импортируется библиотека для апи, в методы которой уже зашиты урлы. И при прогонке теста используются как раз эти урлы. То есть запрос идет на сервер.
Как это исправить? Или как подменить эту переменную внутри импортируемого модуля Vuex?
Вот сам тест:
import Vuex from '@/store/siteStorage/itemsList'
import * as types from './mutation-types.js'
import { expect } from 'chai'
import { flushPromises } from 'flushPromises'
describe('Tests for Vuex', () => {
it('Test for items list', () => {
let testData = [1, 2, 3]
const State = {
state: {
items: []
},
commit (name, data) {
this.state.feeds = data
}
}
Vuex.actions[types.GET_ITEMS](State)
await flushPromises()
expect(State.state.items).to.deep.equal(testData)
})
})
Вроде и все подменил, и расписал как надо, а запрос идет на сервер. Или я чего-то не понимаю?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Имеется текстовое поле, в которое вводится значение, по которому фильтруется store, тк
На одной странице сайта есть ссылка-спойлер, то есть при клике на нее под ней появляется блок: с помощью js кода идет подмена стиля с display:none...