GitHub Actions๋
๋ฆฌํฌ์ ์ ์๋ ์ํฌํ๋ก์ฐ๋ฅผ ํตํด ์ฝ๋์ ๋น๋, ํ
์คํธ, ๋ฐฐํฌ๋ฅผ ์๋ํ ํ๋ ๋๊ตฌ.
ํ๋ก์ ํธ ๋ด๋ถ .github/workflows ๊ฒฝ๋ก์ ์์ฑ๋ yamlํ์ผ์ ์ฝ๊ณ ์คํํ๋ค.
# vitest.yml
name: 'vitest test'
on: pull_request
jobs:
Component-test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-node@v3
with:
node-version: 19
- name: Install dependencies
run: npm ci
- name: run vitest
run: npm run test
on: pull_request: ํ๋ฆฌํ์คํธ๊ฐ ๋ฐ์ํ๊ฑฐ๋, ํด๋น PR์์ ์ปค๋ฐ์ด ๋ฐ์ํ ๋๋ง๋ค ์ด ์ก์
์ด ์คํ๋๋ค.
1๋ถ ๋ง๋ฌด๋ฆฌ
ํ ์คํธ ์ฝ๋์ ํจ๊ณผ
์ฒซ ์์ ๋ถํฐ ๊ฐ์กฐํ ์ฐ๋ฆฌ๊ฐ ํ ์คํธ ์ฝ๋๋ฅผ ๊ณต๋ถํด์ผ ํ๋ ์ด์ :
- ๋ฆฌํฉํ ๋ง - ์ฝ๋์ ๋ํ ๋น ๋ฅธ ํผ๋๋ฐฑ์ ๋ฐํ์ผ๋ก ์์ ์ ์ผ๋ก ๋ฆฌํฉํ ๋ง์ ์งํํ ์ ์๋ค.
- ๋ฌธ์ - ํ ์คํธ ์ฝ๋ ์์ฒด๊ฐ ์ฑ์ ์ดํด๋ฅผ ๋๋ ๋ฌธ์๊ฐ ๋๋ค.
- ์ข์ ์ค๊ณ - ํ ์คํธ ํ๊ธฐ ์ข์ ์ฝ๋๊ฐ ์ข์ ์ฝ๋๋ค. ๊ทธ๋์ ํ ์คํธ ๋จ์์ ๋ํ ๊ณ ๋ฏผ์ ์ข์ ์ฝ๋ ์ค๊ณ๋ก ์ด์ด์ง๋ค.
ํ ์คํธ ์ฝ๋ ์์ฑ ๊ท์น
- ์ธํฐํ์ด์ค ๊ธฐ์ค์ผ๋ก ํ
์คํธ๋ฅผ ์์ฑ
- ๋ด๋ถ ๊ตฌํ์ ๋ํ ์์กด์ฑ์ด ์์ด์ผ ํ๋ค.
- ๊ทธ๋์ ๋ฆฌ์กํธ ์ปดํฌ๋ํธ์ state ๊ฐ์ ๋ด๋ถ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์กฐ์ํ๊ธฐ๋ณด๋ค ์ฌ์ฉ์ ์ด๋ฒคํธ๋ UI๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ฑํ๋ค.
- ์๋ฏธ ์๋ ํ
์คํธ์ธ์ง ๊ณ ๋ฏผํ์
- ์ปค๋ฒ๋ฆฌ์ง 100%์ ์ง์ฐฉํ๊ธฐ๋ณด๋ค ์ ์๋ฏธํ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ ์ ์๋์ง ํ์ธ
- ํ
์คํธ ์ฝ๋์ ๊ฐ๋
์ฑ์ ์๊ฐํ์
- ๋ช ํํ ํ ์คํธ ์ค๋ช
- ํ ์คํธ์ฝ๋๋ ํ๋์ ์ฑ ์์ ๊ฐ์ง๋ค.
๋จ์ ํ ์คํธ
์ฑ์์ ํ ์คํธ ๊ฐ๋ฅํ ๊ฐ์ฅ ์์ ์ํํธ์จ์ด๊ฐ ์์๋๋ก ๋์ํ๋์ง ํ์ธํ๋ ํ ์คํธ
- ๊ณตํต ์ปดํฌ๋ํธ
- ๋ฆฌ์กํธ ํ
- ์ ํธ ํจ์
ํตํฉ ํ ์คํธ
๋ ๊ฐ ์ด์์ ๋ชจ๋์ด ์ํธ ์์ฉํ์ฌ ๋ฐ์ํ๋ ์ํ๋ฅผ ๊ฒ์ฆํ๋ ํ ์คํธ.
- ๋น์ฆ๋์ค ๋ก์ง์ ๊ธฐ์ค์ผ๋ก ๋๋ฉ์ธ๋ณ๋ก ๋๋์ด ํด๋น ๋๋ฉ์ธ์ ์ฐธ์ฌํ๋ ์ปดํฌ๋ํธ๋ค์ ์กฐํฉ์ ๊ฒ์ฆ.
- ์ํ ๊ด๋ฆฌ, API ํธ์ถ์ ์์ ์ปดํฌ๋ํธ๋ก ์์ง.
ํค์๋
- ํ ์คํธ ํ๋ ์์ํฌ
- ๋จ์ธ assertion
- ๋งค์ฒ matcher
- ์ ์ , ํฐ์ด๋ค์ด
- Testing Library
- ๋ชจํน
- msw
ํ ์คํธ์ ํ๊ณ
๋ชจ๋ ํ ์คํธ๋ค์ ์ฅ์ ๊ณผ ํ๊ณ๋ฅผ ๊ฐ์ง๋ค. ๊ทธ๋์ ํ๋ก์ ํธ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ์ด๋ค ํ ์คํธ์ ๋ ์๊ฐ๊ฐ ์์์ ์ฌ์ฉํด์ผ ํ๋์ง ๊ฒฐ์ ํ๋๊ฒ์ด ์ค์ํ๋ค. ๋์ฒด๋ก ์ผ๋ฐ์ ์ธ ์๋น์ค ์ฑ์ ๊ฒฝ์ฐ ํตํฉ ํ ์คํธ์ ์ง์คํ๋ ๊ฒ์ด ์ข๊ณ , ๊ณตํต ์ปดํฌ๋ํธ๋ ๋ฆฌ์กํธ ํ ๊ณผ ๊ฐ์ UIKit๋ฅผ ๋ง๋๋ ํ๋ก์ ํธ์์๋ ๋จ์ ํ ์คํธ์ ์ง์คํ๋ ๊ฒ์ด ์ข๋ค.
