import React from 'react'; import { render } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { mocked } from 'ts-jest/utils'; import { App } from './App'; import { store } from './store'; jest.mock('./store', () => ({ store: { create() { return { counter: 50, increment: jest.fn().mockImplementation(() => console.log('Running mock increment')), decrement: jest.fn().mockImplementation(() => console.log('Running mock decrement')), }; }, }, })); beforeAll(() => (mockedStore = mocked(store, true).create())); let mockedStore = mocked(store, true).create(); test('The increment Button to call store.increment', () => { const { getByText } = render(<App />); const button = getByText('+'); userEvent.click(button); expect(mockedStore.increment).toBeCalled(); }); test('The decrement Button to call store.decrement', () => { const { getByText } = render(<App />); const button = getByText('-'); userEvent.click(button); expect(mockedStore.decrement).toBeCalled(); }); test('The counter value is displayed in the component', () => { const { getByTestId } = render(<App />); const output = getByTestId('output'); expect(output).toHaveTextContent(mockedStore.counter.toString()); });