Untitled

mail@pastecode.io avatar
unknown
plain_text
22 days ago
1.4 kB
8
Indexable
Never
// myStore.js

import { createPinia } from 'pinia';

export const pinia = createPinia();

export const myStore = pinia.store({
  id: 'myStore',
  state: () => ({
    value: 0,
  }),
  actions: {
    increment() {
      this.value++;
    },
  },
});

// myStore.test.js

import { mount } from '@vue/test-utils';
import MyComponent from '@/components/MyComponent.vue';
import { pinia, myStore } from '@/myStore';

// Замокируем стор
jest.mock('@/myStore', () => ({
  ...jest.requireActual('@/myStore'),
  myStore: pinia.store({
    id: 'myStore',
    state: () => ({
      value: 42,
    }),
    actions: {
      increment: jest.fn(),
    },
  }),
}));

describe('MyComponent', () => {
  it('renders with mocked store', async () => {
    // Монтируем компонент, который использует стор
    const wrapper = mount(MyComponent);

    // Ждем завершения обновлений
    await wrapper.vm.$nextTick();

    // Проверяем, что компонент рендерится с ожидаемым значением
    expect(wrapper.text()).toContain('Value: 42');

    // Проверяем, что метод increment вызывается при нажатии кнопки
    await wrapper.find('button').trigger('click');
    expect(myStore.increment).toHaveBeenCalled();
  });
});
Leave a Comment