| name | vitest-testing-skills |
| description | Advanced guidelines and best practices for writing tests using Vitest. Apply this skill when generating, reviewing, or refactoring test codes to prevent common pitfalls and ensure high performance. |
Vitest Testing Guidelines & Best Practices
์ด ํ๋ก์ ํธ์์ Vitest๋ฅผ ์ฌ์ฉํ์ฌ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ค์ํด์ผ ํ ํต์ฌ ์ง์นจ์
๋๋ค. AI๋ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ฑฐ๋ ์์ ํ ๋ ์ด ๊ท์น์ ์ต์ฐ์ ์ผ๋ก ์ ์ฉํด์ผ ํฉ๋๋ค.
1. ํ
์คํธ ๊ธฐ๋ณธ ์์น (Core Principles)
- AAA ํจํด ์ค์: ๋ชจ๋ ํ
์คํธ๋
Arrange(์ค๋น), Act(์คํ), Assert(๊ฒ์ฆ) ๋จ๊ณ๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ช
ํํ ๋ถ๋ฆฌํ์ฌ ์์ฑํฉ๋๋ค.
- ํ์ ๊ธฐ๋ฐ ๊ฒ์ฆ (Testing Behavior): ๋ด๋ถ ๋ณ์๋ช
์ด๋ ๊ตฌํ ์ธ๋ถ ์ฌํญ์ ํ
์คํธํ์ง ๋ง์ธ์. ์ฌ์ฉ์ ๊ด์ ์ ์
๋ ฅ๊ณผ ๋์(์ถ๋ ฅ)๋ง ๊ฒ์ฆํฉ๋๋ค.
- ํ์ผ ๋ณ์น (Colocation): ํ
์คํธ ํ์ผ์ ํ๊ฒ ํ์ผ๊ณผ ๋์ผํ ๋๋ ํ ๋ฆฌ์ ์์น์ํต๋๋ค. (์:
utils/math.ts -> utils/math.test.ts)
2. ๋ชจํน ๋ฐ ๊ฒฉ๋ฆฌ (Mocking & Isolation)
- ์ด๊ธฐํ: ํ
์คํธ ๊ฐ์ ์ํ ์ค์ผ์ ๋ง๊ธฐ ์ํด,
describe ๋ธ๋ก ๋ด๋ถ์ beforeEach์์ vi.clearAllMocks()๋ฅผ ํธ์ถํ์ธ์.
- ํธ์ด์คํ
์ฃผ์ (Hoisting):
vi.mock()์ ํ์ผ ์ต์๋จ์ผ๋ก ํธ์ด์คํ
๋ฉ๋๋ค. vi.mock ๋ด๋ถ์์ ์ธ๋ถ ๋ณ์๋ฅผ ์ฐธ์กฐํด์ผ ํ ๊ฒฝ์ฐ ๋ฐ๋์ vi.hoisted()๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ์๋ ํจ๊ป ํธ์ด์คํ
๋๋๋ก ์ฒ๋ฆฌํ์ธ์. ํธ์ด์คํ
์ ์์น ์๋ ๋์ ๋ชจํน ์์๋ vi.doMock()์ ์ฌ์ฉํฉ๋๋ค.
- ์๊ฐ ์ ์ด (Fake Timers): ์๊ฐ์ ์์กดํ๋ ๋ก์ง์ ์ค์ ์๊ฐ์ ๊ธฐ๋ค๋ฆฌ์ง ๋ง๊ณ
vi.useFakeTimers()์ vi.advanceTimersByTime()์ ์ฌ์ฉํ์ธ์.
3. ํ์
๊ฒ์ฆ (Type Testing)
- ๋ฐํ์ ํ
์คํธ ๋ถ๋ฆฌ: ๋ณต์กํ ์ ํธ๋ฆฌํฐ ํ์
์ด๋ ์ ๋ค๋ฆญ(Generic)์ ์ ํ์ฑ์ ๊ฒ์ฆํด์ผ ํ ๊ฒฝ์ฐ, ์ผ๋ฐ ๋ฐํ์ ํ
์คํธ ํ์ผ์ด ์๋
*.test-d.ts ํ์ผ์ ์์ฑํ์ธ์.
- ํ์
๋จ์ธ: Vitest์
expectTypeOf ๋๋ assertType API๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ํ์
์ถ๋ก ์ด ์ฌ๋ฐ๋ฅด๊ฒ ์๋ํ๋์ง ๊ฒ์ฆํฉ๋๋ค.
4. UI ์ปดํฌ๋ํธ ํ
์คํธ (DOM & Browser)
- ์ ๊ทผ์ฑ ์ค์ฌ ์ฟผ๋ฆฌ:
@testing-library ์ฌ์ฉ ์ querySelector ๋ฑ DOM ๊ตฌ์กฐ์ ์์กดํ๋ ์ฟผ๋ฆฌ๋ฅผ ๊ธ์งํ๊ณ , getByRole, getByText ๋ฑ ์ ๊ทผ์ฑ ๊ธฐ๋ฐ ์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์.
- ๊ฐ์ DOM์ ํ๊ณ ์ธ์ง:
jsdom์ด๋ happy-dom์ ์ค์ ๋ธ๋ผ์ฐ์ ๊ฐ ์๋๋ฏ๋ก IntersectionObserver ๋ฑ ์ค์ ๋ธ๋ผ์ฐ์ API๊ฐ ํ์ํ ๊ฒฝ์ฐ, ์ด๋ฅผ ๋ช
์์ ์ผ๋ก ๋ชจํนํ๊ฑฐ๋ Browser Mode ํ๊ฒฝ์ ๊ณ ๋ คํ ์ฝ๋๋ฅผ ์์ฑํด์ผ ํฉ๋๋ค.
5. ์ํฐ ํจํด (Strictly Avoid)
- ๊ฑฐ๋ํ ๋จ์ผ ํ
์คํธ (God Test): ํ๋์
it ๋ธ๋ก์ ์ฌ๋ฌ ๋์์ ๋ชฐ์๋ฃ์ง ๋ง๊ณ , ํ๋์ ๋
ผ๋ฆฌ์ ๋์๋ง ๊ฒ์ฆํ๋๋ก ์ชผ๊ฐ์ธ์.
- ๋ฌด์๋ฏธํ ์ปค๋ฒ๋ฆฌ์ง์ฉ ํ
์คํธ: ์ปค๋ฒ๋ฆฌ์ง ์์น๋ง์ ์ํ ์๋ฏธ ์๋ ๊ฒ์ฆ(
expect(true).toBe(true))์ ์์ฑํ์ง ๋ง์ธ์.