Я новичок в шутке и пытаюсь написать модульный тест, основанный на значении свойства магазина.
Я пытался создать новое тестовое хранилище в моем тесте (у меня уже есть макетхранить для другого теста), но по какой-то причине я получаю ошибку
TypeError: Cannot read property 'state' of undefined
Мои тесты:
import { shallowMount, createLocalVue,} from '@vue/test-utils';
import userButtons from '@components/user-profile/UserButtons.vue';
import Vuex from 'vuex';
import { defaultValues, } from '@store/api/userButtons.js';
const localVue = createLocalVue();
localVue.use(Vuex);
describe('UserButtons', () => {
let actions;
let store;
let storeIsAdded;
beforeEach(() => {
actions = {
getUserInfo: jest.fn(),
};
store = new Vuex.Store({
modules: {
userButtons: {
namespaced: true,
actions,
state: {
userButton: defaultValues,
},
mutations: {
setUserButton: jest.fn(),
},
},
},
});
storeIsAdded = new Vuex.Store({
state: {
isItemAdded: true,
},
});
});
test('vuex called on create', () => {
shallowMount(UserButtons, { store, localVue, propsData: { id: 3406304, }, });
expect(actions.getUserInfo).toHaveBeenCalled();
});
test('renders correctly', () => {
const wrapper = shallowMount(UserButtons, { store, localVue, propsData: { id: 3406304, }, });
expect(wrapper.element).toMatchSnapshot();
});
test('indicates remove if isItemAdded is true', () => {
const wrapper = shallowMount(UserButtons, { storeIsAdded, localVue, propsData: { id: 3406304, }, });
expect(wrapper.find('.button-action.my-items').text()).toBe('- Remove from My Items');
});
});
Первые два теста, которые просто используют defaultValues для моегоstore, pass.
Последний тест, 'indicates remove if isItemAdded is true',
- это тот, который не прошел и использует фиктивный магазин, storeIsAdded
.
Если у кого-то есть понимание, было бы оченьприветствуется !!!
РЕДАКТИРОВАТЬ:
Даже если я изменю свой макет магазина так, чтобы он больше походил на магазин, который, кажется, работает, например:
storeIsInList = new Vuex.Store({
modules: {
userButton: {
namespaced: true,
actions,
state: {
userButton: {
isItemAdded: true,
},
},
},
},
});
Я получаю ту же ошибку.