Тестирование производственного экземпляра vuex в JEST - PullRequest
0 голосов
/ 20 марта 2019

В моем проекте есть несколько модулей 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');
        })
    });
})

Привет

...