在JEST中测试生产vuex实例

时间:2019-03-20 08:20:38

标签: unit-testing testing vue.js jestjs vuex

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

致谢

0 个答案:

没有答案