'๋จ์ ํ ์คํธ'๋?
์ฑ์์ ํ ์คํธ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ์ํํธ์จ์ด๋ฅผ ์คํํด ์์๋๋ก ๋์ํ๋์ง ํ์ธํ๋ ํ ์คํธ.
- ํ๋ก ํธ์์๋ ๊ฐ๋ น ๋จ์ผํจ์์ ๊ฒฐ๊ณผ๊ฐ, ๋จ์ผ ์ปดํฌ๋ํธ์ ์ํ๋ ํ์ ๋ฑ์ด ๋ ์ ์๋ค.
- '๋จ์ผ' : ์ปดํฌ๋ํธ๋ผ๋ฆฌ์ ์ํธ์์ฉ์ ๊ฒ์ฆํ๊ธฐ๋ณด๋ค๋ ๊ฐ๊ฐ์ ํ์๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๊ฒ์ฆํ๋ค.
ํ๋ก ํธ(๋ฆฌ์กํธ)์์๋ ๋ฒํผ, ํ ์คํธ ์ธํ, ์บ๋ฌ์ , ์์ฝ๋์ธ ๋ฑ์ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ค๋ฐ์ฌ์ธ๋ฐ ์ด๋ฐ ์ปดํฌ๋ํธ๋ค์ด ๋จ์ ํ ์คํธ์ ์์ฃผ ์ ํฉํ ์ปดํฌ๋ํธ์ด๋ค. (Atomic ์ปดํฌ๋ํธ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค)
AAA ํจํด
ํ ์คํธ ์ฝ๋ ์์ฑ์๋ ์ฌ๋ฌ ํจํด์ด ์๋ค. AAA ํจํด์ด๋ Arrange-Act-Assert ํจํด์ ์ค์๋ง.
Arrange : ํ ์คํธ๋ฅผ ์ํ ํ๊ฒฝ ๋ง๋ค๊ธฐ (์ปดํฌ๋ํธ ๋ ๋๋ง ํ๋ ์ฝ๋ ๋ฑ)
- testing-library ์ฌ์ฉ Act : ํ ์คํธํ ๋์ ๋ฐ์ Assert : ์ฌ๋ฐ๋ฅธ ๋์์ด ์คํ๋์๋์ง ๋๋ ๋ณ๊ฒฝ์ฌํญ ๊ฒ์ฆ
- vitest ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
it('className prop์ผ๋ก ์ค์ ํ css class๊ฐ ์ ์ฉ๋๋ค.', async () => {
// Arrange
// - className์ ์ง๋ ์ปดํฌ๋ํธ ๋๋๋ง
await render(<TextField className={`my-class`} />);
// Act
// - ํด๋ฆญ์ด๋ ๋ฉ์๋ ํธ์ถ, prop ๋ณ๊ฒฝ ๋ฑ๋ฑ์ ๋ํ ์์
// Assert
// - ๋ ๋๋ง ํ DOM์ ํด๋น class๊ฐ ์กด์ฌํ๋์ง ๊ฒ์ฆ
expect(screen.getByPlaceholderText('ํ
์คํธ๋ฅผ ์
๋ ฅํด ์ฃผ์ธ์.')).toHaveClass(
'my-class',
);
});
