๋ฌธ์ POST/PATCH Mutation ์์ฒญ์ ์บ์ฑ์ ๋ฌดํจํํ์ฌ ๋ฐ์ดํฐ์ ์ต์ ์ํ๋ฅผ ์ ์งํ๋๋ก ์ ์ฉํด๋์๋ค.์ด๋ฏธ์ง ๋ฑ๋ก POST > ์ด๋ฏธ์ง ๋ชฉ๋ก GET > ์ธ๋ค์ผ ์ด๋ฏธ์ง PATCH > ์ ์ฒด ์ด๋ฏธ์ง๋ชฉ๋ก GET ์์๋ก ํธ์ถ๋์ด ๊ฐฑ์ ๋ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋๋ก ์์ํ์ผ๋, PATCH Mutation ์์ฒญ ์ดํ์ GET ์ฟผ๋ฆฌ๊ฐ ์คํ๋์ง ์์์, ์ธ๋ค์ผ์ด๋ฏธ์ง๊ฐ ํ๋ฉด์ ๋ฐ๋ก ๋ฐ์๋์ง ์๋ ๋ฌธ์ ๊ฐ ์์๋ค. Expected Behavior POST > GET > PATCH > GET Current BehaviorPOST > GET > PATCH (๋ธ๋ผ์ฐ์ ๋คํธ์ํฌ) POST > PATCH > GET (์ฝ์) ์ปดํฌ๋ํธ ์ฝ๋//ImageContainer.tsx์๋ฒ์ ์์ฒญ ๋ณด๋ด๋ ์ฝ๋ ์กด์ฌ ์ธ๋ค์ผ ์ค์ ํ๋ ํจ์ const ..
์ ์ฒด ๊ธ
์ด์authoriztion token์ ๋ณด๋ก api์ ์์ฒญ์ ๋ฐ์์ ํ๋ฉด์ ์ ์ ์ ๋ณด๋ฅผ ๋์ฐ๋ ๋ง์ด ํ์ด์ง๊ฐ ์๋ค.ํ
์คํธ๋ฅผ ๋๋ฆฌ๋๋ฐ ํ
์คํธ ํ๊ฒฝ์์ ์๊พธ ์ ์ ์ ๋ณด๊ฐ ๋น๊ฐ์ผ๋ก ๋์ค๋ ์ด์๊ฐ ์์๋ค. ์ปดํฌ๋ํธ ๊ตฌํ ์ ์ ์ ๋ณด๋ฅผ get ํด์ค๋ ค๋ฉด ์ ์ฅ๋ ํ ํฐ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ฒ์ ์์ฒญํด์ response๋ก ๋ฐ์์์ผํ๋ค.์ด๋, ์ธ์ฆ ํ ํฐ์ ๋ก์ปฌ์คํ ๋ฆฌ์ง์์ ํ ํฐ ์ ๋ณด๋ฅผ ๋ฐ์์ค๋๋ฐ, ๋ก์ปฌ ์คํ ๋ฆฌ์ง์์ ํ ํฐ์ ๋ณด๋ฅผ ๋ฐ์์ฌ๋ localStorage Web API๋ฅผ ์ฌ์ฉํด์ localStorage.getItem("token")๋ก ๋ฐ๋ก ๋ฐ์์ค๋ ๊ฒ์ด ์๋๊ณ , store๋ผ๋ 3rd party ํจํค์ง๋ฅผ ํตํด ์คํ ๋ฆฌ์ง์ ์ ๊ทผํ๋ค. //package.json "dependencies": { "store": "2.0.12" }, ๋ฐ..
์์กด์ฑ ํจํค์ง "devDependencies": { "jest": "29.3.1", "react": "18.2.0", ... } ๋ฌธ์ test ํ๊ฒฝ์์ png ์ด๋ฏธ์ง ํ์ผ์ ๋ชป์ฝ์ด์ค๋ ์๋ฌ๊ฐ ๋ฐ์ error: `process()` or/and `processAsync()` method of code transformer found at fileTranformer.cjs "/fileTransformer.cjs" should return an object or a Promise resolving to an object. ์์ธjest๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฝ๋๋ฅผ JavaScript๋ก ์คํํ๋ค. Node๊ฐ ์ง์ํ์ง ์๋ syntax์ธ JSX, TypeScript ๊ฐ์ ์ฝ๋๋ฅผ ๊ณง๋ฐ๋ก ์ฌ์ฉํ๋ ค๋ฉด pla..
๋ค์ด๊ฐ๊ธฐํ๊ฒฝnode 20.16 ํจํค์ง ์์กด์ฑreact testing library 13.4.0redux toolkit 1.9.5 msw 2.3 vite 5.2.11typescript 4.9.4jest 29.3.1 msw ํธ๋ค๋ฌ๋ก ์๋ฒ ์๋ต ๋ชจํน, RTK Query๋ก API ํธ์ถํ๋ ์ปดํฌ๋ํธ์์ ๋ฐ์ํ๋ ์๋ฌ ๋ชจ์zip... ํ
์คํธ๋ก ์ฝ๋ ํ์ง์ ํฅ์์ํค๊ณ ์ ํ์ผ๋ jest testing framework + msw 2 ํ๊ฒฝ์์ ์
ํ
ํ๋ค๊ฐ ์ ์ ๊ฑด๊ฐ์ ์ํ์ ๋ฐ์๋คmsw ์์๋ ์๊ธด๊ฒ ์ด๋ ๊ฒ ์
ํ
ํ๋๊ฒ ๊ท์ฐฎ์ผ๋ฉด ~ ๋ ๋ชจ๋ํ ํ
์คํ
ํ๋ ์์ํฌ ์ฌ์ฉํ๋ ด~ ์ด๋ผ๊ณ ๊ถ์ฅ..If you find this setup cumbersome, consider migrating to a modern testing fra..
ํ
์คํธ ๋ด์ฉ ํ
์คํธ ํ๊ฒฝ jest | React Testing Library React Router์ useNavigate๋ก ์ฐ๊ฒฐ๋์ด์๋ ํ์ด์ง๊ฐ ์๋ค. ํ์ธ ๋ฒํผ์ ๋๋ฅด๋ฉด ์กฐ๊ฑด์ ์ถฉ์กฑํ๋์ง ๊ฒ์ฌ ํ ๋ค์ ํ์ด์ง๋ก ์ด๋ํ๋ ํ์ด์ง์ด๋ค. ์ด๋ฅผ ์๋์ ๊ฐ์ด ํ
์คํธํด์ผ ํ๋ค. ์ฝ๊ด๋์ ํ์ด์ง์์ ์ ์ฒด ๋์ ์ฒดํฌ ํ ํ์ธ๋ฒํผ์ ๋๋ฅด๋ฉด, ๋ค์ ํ์ด์ง์ธ ์ด๋ฆ ์
๋ ฅํ์ด์ง๋ก ์ด๋ํ๋ค. ํ
์คํธํ๋ ค๋ ์ฝ๋ Agreement.tsxexport const Agreement = () => { const navigate = useNavigate(); const [checked, setChecked] = useState(false); const handleClick = () => { if (checked) { navigate('/..
๊ธฐ์กด ์
์
api ์์ฒญ์ stage ์๋ฒ์ url์ธ `VITE_ACCOUNTS_BASE_URL` ํ๊ฒฝ๋ณ์๋ก ์ง์ ํ ์ฃผ์๋ก ์์ฒญ์ ๋ณด๋ด์ ์คํ
์ด์ง ์๋ฒ ์์ฒญ/์๋ต์ ์ง์ ๋ฐ๋๋ค. ์๋ฒ์์ ์๋ต์ผ๋ก ์ฃผ๋ ํ์ด์ง ์ฃผ์๋ redirect ํ์ด์ง url ์ ๋ณด๋ `VITE_LOCAL_HOST` ๋ผ๋ ํ๊ฒฝ๋ณ์ ์ฃผ์๋ก ๊ด๋ฆฌํด์ ๊ฐ๋ฐํ๋ฉด์ ๋ฐ๋ก๋ฐ๋ก ์๋ฒ ์๋ต์ ๋ฐ๋ฅธ ํ์ด์ง ui ๋ฅผ ํ์ธํ๋ค. package.json "scripts": { "dev": "vite", "build": "vite build -m stage", "stage": "vite -m stage", } ํ๊ฒฝ๋ณ์ ํ์ผ๊ฐ๋ฐ ๋ชจ๋ ํ๊ฒฝ๋ณ์ ์คํ
์ด์ง ๋ชจ๋ ํ๊ฒฝ๋ณ์ vite ๊ฐ๋ฐ์๋ฒ ์์`npm run dev` ๋ช
๋ ์ด๋ก ๋ก์ปฌ์์ vite ๊ฐ..
This post is what I took notes from the React Testing for Beginners By Programming with Mosh.What to testTesting ComponentsHow they renderHow they responsd to user actions No tests > Bad testsBad tests are worse than No tests.Poorly written tests can get in the way and slow us down. Test the behaviour (What the application does), not the implementation (How it's implemented) Integration Tests ..
์๋ก ์ฌ๋ด UI ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก Mui๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ ๋์์ธ ์์คํ
์ ๋ฐ๋ฅธ ์ปดํฌ๋ํธ ์คํ์ผ๋ง ์์
์ theme ์์ฒด๋ฅผ ์ปค์คํ
ํ์ฌ ์ฌ์ฉ์ค์ด๋ค. theme์ ์ปค์คํฐ๋ง์ด์ฆํด์ ํจํค์ง๋ก ๋ถ๋ฆฌํ์ฌ ํจํค์ง์์ ์ ์ํด๋ theme์ ๊ฐ์ ธ์ค๋ฉด ์ด๋ ์ํฌ์คํ์ด์ค ํ๋ก์ ํธ์์๋ ๋์์ธ์ด ํ๋ฒ์ ์ ์ฉ๋๊ฒ ํ์ฌ ์ ์ง๋ณด์๋ฅผ ํ๊ณ ์๋ค. ์ฆ theme์ ๋์์ธ ์์
์ ํด๋๋ฉด ๋ ํฌ ๋ด๋ถ์ ๋ชจ๋ ์ํฌ์คํ์ด์ค์์ ๋ค๋ฅธ ๊ฐ๋ฐ์๋ค๋ ์คํ์ผ๋ง์ด ์
ํ์ง ์ปดํฌ๋ํธ๋ฅผ ๋ฐ๋ก ๊ฐ์ ธ๋ค๊ฐ ์ธ ์ ์๋ค.๊ทธ๋ฐ๋ฐ ์ด๋ฒ์ Select ์ปดํฌ๋ํธ๋ฅผ ์ปค์คํ
ํ๋๋ฐ ๋๋ ์ฝ์ง์ ํ์๋ค... ๋ผ๋ฒจ ์ฌ๋ถ์ ๋ฐ๋ผ padding ๊ฐ๊ฒฉ์ ์กฐ์ ํด์ผํ๋๋ฐ, Textfield ์ปดํฌ๋ํธ์๋ ๋ค๋ฅด๊ฒ ์ง์ ์ ์ผ๋ก label ํ๋กํผํฐ๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ด ์ ๋ฅผ ๋จน์๋ค. ๊ทธ๋์ ๊ธฐ๋กํด๋ด! Textf..