我的项目中有一些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');
})
});
})
致谢