Может быть, кто-нибудь знает, как проверить асинхронное действие в хранилище?
У меня есть этот модуль хранения (упрощенно):
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. Но у меня есть проблема с действием: в этом модуле используется библиотека с API, внутри которой есть URL-адреса на стороне сервера. Когда я запускаю тесты по каким-то причинам, использую эти URL. например Запрос выполняется на производственный сервер.
Как исправить это поведение? Как изменить эти URL-адреса в импортированном модуле 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)
})
})
Вроде и все изменилось, и расписано как надо, и запрос отправляется на сервер. Или я чего-то не понимаю?