В моем проекте есть несколько модулей Vuex (например, школа, люди и т. Д.). Каждый модуль имеет свои действия, мутации, состояние и геттеры. Каждого из них я хочу проверить. Например, у меня есть действие, как показано ниже в store / school / actions.js
fetchGroups({ dispatch, commit, getters, rootGetters }, params = {}) {
const { page, perPage, filter } = {
page: params.page || getters.groupsPagination.page,
perPage: params.perPage || getters.groupsPagination.perPage,
filter: getters.groupsFilter
}
return new Promise(async(resolve, reject) => {
try {
const { data } = await http.get(
`school/${rootGetters.currentSchoolId}/groups`,
{ params: { per_page: perPage, page, filter: filter } }
);
commit('setState', { collection: 'groups', data: data.data });
commit('setPagination', { collection: 'groups', pagination: data.paginate });
commit('setFiltered', { collection: 'groups', filtered: data.data });
commit('setCheckedGroups', data.data);
resolve(data);
} catch (e) {
reject(e);
}
});
},
Теперь я хочу протестировать его, не создавая новый магазин Vuex. Я хочу издеваться только над ответом от API. Я пытался сделать это, но мой код не работает (тесты проходят, но без каких-либо журналов консоли)
import axios from 'axios';
import store from '@/store';
import MockAdapter from 'axios-mock-adapter';
describe('actions', () => {
let http;
beforeAll(() => {
http = new MockAdapter(axios);
http.onGet('school/2298/groups').reply(200, { data: { foo: 'bar' } });
});
afterEach(() => {
http.reset();
});
afterAll(() => {
http.restore();
});
it('test', () => {
store.dispatch('school/fetchGroups').then(foo => {
console.log('adwwad');
}).catch(e => {
console.log('boo');
})
});
})
Привет