diff --git a/frontend/src/pages/IntroducePage/IntroducePage.test.tsx b/frontend/src/pages/IntroducePage/IntroducePage.test.tsx new file mode 100644 index 000000000..d519cded3 --- /dev/null +++ b/frontend/src/pages/IntroducePage/IntroducePage.test.tsx @@ -0,0 +1,48 @@ +import { render, screen, fireEvent } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import IntroducePage from './IntroducePage'; + +jest.mock('@/components/common/Header/Header', () => ({ + __esModule: true, + default: () =>
Header
, +})); + +jest.mock('@/components/common/Footer/Footer', () => ({ + __esModule: true, + default: () =>
Footer
, +})); + +jest.mock('@/components/common/Spinner/Spinner', () => ({ + __esModule: true, + default: () =>
Loading...
, +})); + +jest.mock('@/assets/images/introduce/Introduce.png', () => 'mocked-image-path'); + +describe('IntroducePage 컴포넌트', () => { + it('초기 상태에서는 스피너가 표시되고 이미지는 숨겨진다', () => { + render(); + + expect(screen.getByTestId('mock-spinner')).toBeInTheDocument(); + + const image = screen.getByAltText('소개 이미지'); + expect(image).toHaveStyle({ display: 'none' }); + }); + + it('이미지 로드가 완료되면 스피너가 사라지고 이미지가 표시된다', () => { + render(); + + const image = screen.getByAltText('소개 이미지'); + fireEvent.load(image); + + expect(screen.queryByTestId('mock-spinner')).not.toBeInTheDocument(); + expect(image).toHaveStyle({ display: 'block' }); + }); + + it('Header와 Footer가 올바르게 렌더링된다', () => { + render(); + + expect(screen.getByTestId('mock-header')).toBeInTheDocument(); + expect(screen.getByTestId('mock-footer')).toBeInTheDocument(); + }); +});