hanjungv
@hanjungv
Students
1,732
Reviews
116
Course Rating
4.9
์ฝ๋ ์กฐ์ปค
โฆ ๊ธฐ์ด๋ถํฐ ์์ฑ๊น์ง, ํ๋ฐํธ์๋(๊ฐ๋ฐ๋ถํฐ ํ
์คํธ๊น์ง, ์ด๋ก ๊ณผ ์์ ๋ก ๋ฐฐ์ฐ๋ ํ๋ฐํธ์๋) ์ ์
โฆ 12๋
์ฐจ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์
โฆ (ํ) ๊ธ๋ก๋ฒ ์ปจํ
์ธ ํ์ฌ FE ๊ฐ๋ฐ ๋ถ๋ฌธ ํ์ฅ
โฆ (์ ) NHN TOAST Cloud FE ๊ฐ๋ฐ ํ์ฅ
โฆ (์ ) ์ผ์ฑ SDS FE ๊ฐ๋ฐ์
์คํ
โฆ ๊ธฐ์ด๋ถํฐ ์์ฑ๊น์ง, ํ๋ฐํธ์๋(๊ฐ๋ฐ๋ถํฐ ํ
์คํธ๊น์ง, ์ด๋ก ๊ณผ ์์ ๋ก ๋ฐฐ์ฐ๋ ํ๋ฐํธ์๋) ์ ์
โฆ 8๋
์ฐจ ํ๋ฐํธ์๋ ๊ฐ๋ฐ์
โฆ (ํ) ๊ธ๋ก๋ฒ ๋ฉ์ ์ ํ์ฌ FE ๊ฐ๋ฐ์
โฆ (์ ) NHN TOAST UI ์คํ์์ค ๊ฐ๋ฐ์
Courses
Reviews
wonza43722196
ยท
Frontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration TestsFrontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration Testsdahm
ยท
Front-end testing for practical use - Part 2. Testing in depth: Visual regression and E2E testingFront-end testing for practical use - Part 2. Testing in depth: Visual regression and E2E testingsuinkim
ยท
Frontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration TestsFrontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration Tests- Frontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration Tests
hochoi86214872
ยท
Frontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration TestsFrontend Testing for Immediate Application - Part 1. Testing Basics: Unit & Integration Tests
Posts
Q&A
AvailableUsers
@Coi๋ ๋ต๋ณ ๋ฆ์ด ์ฃ์กํฉ๋๋ค ใ ใ 1. ์ฌ๊ธฐ์ play ์์ matcher๋ฅผ ๋ฃ์ง ์์ ๊ฒ์ Storybook์ ์๊ฐ์ ์ํ ํ์ธ์ฉ์ผ๋ก ์ฌ์ฉํ๋ ค๋ ์๋์ธ๊ฐ์? + 2. ๊ทธ๋ฆฌ๊ณ ์ด ์ปดํฌ๋ํธ์ ๋์ ๊ฒ์ฆ์ Storybook์ด ์๋๋ผ Vitest์์ ๋ด๋นํ๋๋ก ์ญํ ์ ๋๋ ๊ฒ์ผ๋ก ์ดํดํ๋ฉด ๋ ๊น์?-> ๋ต ๋ง์ต๋๋ค! ์๊ฐ์ ์ผ๋ก ๊ฒ์ฆํ๊ธฐ ์ํด ํ์ฉํ๋ค๋ผ๊ณ ๋ง ์ดํดํด์ฃผ์๋ฉด ๋ฉ๋๋ค. ์ต๊ทผ ํธ๋ ๋๊ฐ ๋ณํจ์ ๋ฐ๋ผ ํด๋น ๋ถ๋ถ์ ๋ํ ํ ์คํธ๋ฅผ ์คํ ๋ฆฌ๋ถ์์ ์งํํ๋๊ฒ๋ ๊ฐ๋ฅํด์ก๋ค๊ณ ์ดํดํ๊ณ ์๋๋ฐ์. ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฐ์ ํ ์คํธ ์ฝ๋ ๋๊ตฌ๋ค๋ ๋ง์ด ์๊ฒผ๊ตฌ์. ๊ฒฐ๊ตญ ๋ชฉ์ ์ ๋ฐ๋ผ ๊ฐ๊ฐ ์ด๋ค ๋ถ๋ถ์ ๊ฒ์ฆํ ์ง, ์ด๋์ ์์ฑํ ์ง ๋ช ํํ๊ฒ ํ๋ค๋ฉด ๊ด๋ฆฌํ๊ธฐ ํธํ๊ณณ์์ ์ด์ํ์ ๋ ๋ฉ๋๋ค.3. ์ค๋ฌด์์๋ ๋ณดํต storybook์ ์ด๋๊น์ง ์์ฑํ๋์ง ๊ถ๊ธํฉ๋๋ค. - ๋ฌผ๋ก ํ์ฌ๋ง๋ค ๋ค๋ฅด๊ฒ ์ง๋ง, ๊ฐ์ํด์ฃผ์๋ ๊ฐ์ฌ๋ ๊ธฐ์ค์ผ๋ก ์๊ฒฌ์ ๋ฃ๊ณ ์ถ์ต๋๋ค.-> ์ผ๋ฐ์ ์ผ๋ก ์ค๋ฌด์์๋ ๋์์ธ ์์คํ ์ ์ด์ํ๋ค๋ฉด ํด๋น ๋ถ๋ถ์ ๋ํด ์ ๋ฐ์ ์ผ๋ก ์ด์์ ํ๋ ํธ์ด๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด ๊ณตํต ์ปดํฌ๋ํธ๋ค์ ๋ํ ๊ด๋ฆฌ ๋ชฉ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ณ ์๊ฐ์ ํ ์คํธ๋ฅผ ์งํํ๋ฉด ํด๋น ์๋๋ฆฌ์ค๋ค์ ๋ํด์๋ง ์ด์์ ํ๋ ํธ์ธ๊ฒ ๊ฐ์์! ์ฃผ๋ก ์คํ ๋ฆฌ๋ถ์ ํ ์คํธ ๊ด์ ์์๋ ์ด์ํ ์ ์์ง๋ง ์ฌ๋ฌ ๋ถ์๋ค ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ๋๊ตฌ๋ก ์ค์ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ด์ ์์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ ๋ง์ด ์์ด์์. ํด๋น ๋ถ๋ถ์ ๋ํด์๋ ๊ณ ๋ฏผํด๋ณด์๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค!
- 0
- 1
- 37
Q&A
mockZustand
์๋ ํ์ธ์ Coi๋.replace ํ๋๊ทธ๋ฅผ ๋๊ธด ์ด์ ๋ ๊ฐ ํ ์คํธ ์คํ ์ ์์ ํ ๊ฒฉ๋ฆฌ๋ฅผ ํตํด ์ผ๊ด๋ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฅํ๊ธฐ ์ํจ์ ๋๋ค.ํ ์คํธ ์คํ์ ํน์ฌ ์ด์ ํ ์คํธ ์คํ์ ๋ณ๊ฒฝ๋ state์ merge ๋๋ฉด ์ํฅ์ ๋ฐ์ ์๋ ์์ด์์. ํ ์คํธ์ ๋ ๋ฆฝ์ฑ์ ๋ณด์ฅํ๊ณ , ์๋์น ์์ ๊ฒฐ๊ณผ๊ฐ ๋ฐ์์ ๋ง๊ธฐ ์ํด ์ฒ๋ฆฌํ์๋ค๊ณ ์ดํดํด์ฃผ์ฌ ๋ฉ๋๋ค.๋ค๋ง, ์์ ํ๋ก์ ํธ์ ํด๋น ํ๋๊ทธ๊ฐ ์์ด๋ ํ ์คํธ๊ฐ ์ ํต๊ณผ๋๊ธดํ๋ค์..ใ ใ ์์ ์ ์ ์๋๋ง ์ดํดํด์ฃผ์ฌ ๋ ๊ฒ ๊ฐ์ต๋๋ค. ํ ์คํธ์ ๋ ๋ฆฝ ์คํ์ ๊ต์ฅํ ์ค์ํ ํฌ์ธํธ๋ผ์์. ์ค์ ๋ก ์ค๋ฌด์ ๋์ ํ์ค๋ ์ด๋ฐ ํ ์คํธ ๋ฐ์ดํฐ ์ค์ผ ์ด์๊ฐ ์์ฃผ ์์ด์ ์ธ์งํ๊ณ ๊ณ์ฌ ๋์๋ ๊ฒ ๊ฐ์ต๋๋ค!
- 0
- 2
- 57
Q&A
ํ๋ก์ ํธ ์ธํ ์ค๋ฅ ๋ฐ ๋ฒ์ ์ค๋ฅ ๋ฌธ์ ๋ฌธ์
์๋ก๋ ๋ต๋ณ์ด ๋ฆ์๋ค์! ์ฃ์กํฉ๋๋ค ใ ใ ์ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ๋ถ๋ถ์ ๋ํด ๊ณต์ ํด์ฃผ์๋ฉด ์ข ๋ ํจ๊ป ์ดํด๋ณผ ์ ์์ ๊ฒ ๊ฐ์ต๋๋คใ ใ ์ฌ์ค node ๋ฒ์ ์ด ๋ฎ๊ณ ๋ฒ์ ์ด ๋ฎ์ ๋ถ๋ถ์ ์์ง๋ง, ๋ด๋ถ์ nvm ๋ฒ์ ์ ๋ช ์๋์ด์๋ ๋ ธ๋ ๋ฒ์ ๊ณผ lock์ ๋ช ์๋ ์์กด์ ์ค์นํ๋ฉด ์๋ฌ๊ฐ ๋ฐ์ํ์ง ์์์ผ ์ ์์ด์ด์์! ๋ ธ๋ ๋ฒ์ ์ด nvm ๋ฒ์ ๊ณผ ์ผ์น๋์ด ์๋์ง, lock ํ์ผ์ ๋ง์ถฐ ์ค์น๊ฐ ๋์ด์๋์ง ๋ค์ ํ์ธํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค. ์ถ๊ฐ๋ก vitest ์ต์คํ ์ ์ ์ด์๊ฐ ์๋๊ฑธ๋ก ์๊ณ ์๋๋ฐ์. ์ด์ ์ ๊ด๋ จํด์ ํด๊ฒฐํ ๋ถ์ด ์์ด ๊ธ ํจ๊ป ๊ณต์ ๋๋ ค ๋ด ๋๋ค. (๋งํฌ)2-1๊ฐ ๊ฐ์ ๊ฒฝ์ฐ๋ Windows/Mac OS ์ฐจ์ด(LF, CRLF)๋ก ๋ฐ์ํ๋ ์ค๋ฐ๊ฟ ๋ฌธ์ ์ฐจ์ด ์๋ฌ๊ฐ ๋์ค๊ณ ์์์ ๋์จ ์ต์คํ ์ ์ ๊ฒฝ์ฐ Vitest Version >= v1.4.0์ด๋ผ vitest ๋ฐ vitest/ui ๋ฑ ์ ๋ฐ์ดํธ๋ฅผ ๋งค๋ฒ ํด์ผ๋ฉ๋๋ค. (๊ฐ์๋ v0.33.0)์ด ๋ถ๋ถ์ ๋ํด์๋ ์ฌ๊ธฐ ๋ช ์ ๋์ด์๋ ๋ฃฐ์ ์ถ๊ฐํด์ ์ฌ์ฉํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.https://github.com/practical-fe-testing/test-example-shopping-mall/issues/2 ์ถ๊ฐ๋ก ๊ด๋ จํด์ ์ต์ ๋ฒ์ ์ ๋ํ ์ ๋ฐ์ดํธ๋ ์ฃผ๊ธฐ์ ์ผ๋ก ๊ฒํ ํ๊ณ ์๋๋ฐ์.https://inf.run/6F2M1์๊ธฐ ๋ช ์๋์ด ์๋ ๋ถ๋ถ์์ ํฌ๊ฒ ๋ณ๊ฒฝ์ด ์์๊ณ , ์ต๊ทผ ๋ฒ์ ์ ๋ํด์๋ ์์ ์ด ๋ง์ด ํ์ํ ๋ถ๋ถ์ด ์์ด ์ ๋ฐ์ดํธ๋ฅผ ํ๊ณ ์์ง๋ ์์ต๋๋ค.ํน์ ์ต์ ๊ตฌ์ฑ์ด ๊ถ๊ธํ์๋ค๋ฉด ์กฐ๋ง๊ฐ ํ๋ ๋ ๋ค์ ๊ตฌ์ฑํด์ ์ฌ๋ ค๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์์ผ์๋ฉด ํธํ๊ฒ ๋จ๊ฒจ์ฃผ์ธ์! ๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 81
Q&A
toggleIsModalOpened ํ ์คํธ ํ ๋ ๊ถ๊ธํ ์ ์ด ์์ต๋๋ค.
์๋ ํ์ธ์! ๋ต๋ณ์ด ์กฐ๊ธ ๋ฆ์๋ค์.๋ง์ํ์ ๊ฒ์ฒ๋ผ false โ true โ false ์ ์ฒด ํ๋ฆ์ ๊ฒ์ฆํ๋ ๊ฒ๋ ์ ํจํ ์ ๊ทผ์ ๋๋ค.๋ค๋ง ์ด๊ธฐ๊ฐ ๊ฒ์ฆ์ ์๋จ ํ ์คํธ์์ ์ด๋ฏธ ํ๊ณ , ๋๋จธ์ง ํ ์คํธ๋ค์ ๊ฐ๊ฐ toggle, setTrue, setFalse๊ฐ ์ํ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณ๊ฒฝํ๋์ง๋ง ํ์ธํ๋ ๊ฑธ๋ก ์ฒ๋ฆฌํ์ต๋๋ค.๋ง์ํด์ฃผ์ ์ ๊ทผ ๋ฌผ๋ก ํ๋นํฉ๋๋ค. ์ง๊ธ์ฒ๋ผ ๋จ์ํ ๊ฒฝ์ฐ์ ํ์ฌ ๊ตฌ์ฑ์ผ๋ก ์ถฉ๋ถํ์ง๋ง, ์ํ ์ ์ด๊ฐ ๋ณต์กํด์ง๋ฉด ์๋๋ฆฌ์ค ๊ธฐ๋ฐ(๋ง์ํด์ฃผ์ !) ํ ์คํธ๊ฐ ๋ ์ ์ฉํ ์ ์์ต๋๋ค.๊ฐ์ฌํฉ๋๋ค!
- 0
- 2
- 41
Q&A
๋ก๋ฉ/์๋ฌ์ฒ๋ฆฌ ๊ฒ์ฆ์ ์ด๋ป๊ฒ ํ๋๊ฒ ์ข์๊น์?
์๋ ํ์ธ์! ์ข์ ์ง๋ฌธ์ด๋ค์.๋จ์ํ API ํธ์ถ์ ๋ํ ๊ฒ์ด ์๋ Error Boundary๋ Suspense๊ฐ ๋จ์ํ ๋ฆฌ์กํธ ๊ธฐ๋ฅ์ ํ์คํ๋ ์ ๋๋ก ๋์ํ๋ ๊ฒ์ ๊ฒ์ฆํ๋ ๊ฒ์ด ์๋๋ผ, ๋ ธ์ถ๋๋ ์กฐ๊ฑด์ด ๋ณต์กํ๊ฑฐ๋ ๋น์ฆ๋์ค ๋ก์ง์ด ์ฝํ์๋ ๊ฒฝ์ฐ์๋ ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒ์ด ์ข์๋ณด์ ๋๋ค.๋ง์ํด์ฃผ์ ๋๋ก ํฉ์ฑํด์ ์ฌ์ฉํ ์ ์๋๋ก ์ฌ๋ฌ ๊ธฐ๋ฅ์ ๋ํผ ํํ๋ก ์์ฑํด๋๋ค๋ฉด, ๊ฒ์ฆ์ ์งํํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ErrorBoundary์ Suspense๊ฐ ํจ๊ป ๊ด๋ฆฌ๋๋ ์ปดํฌ๋ํธ๊ธฐ๋ ํ๊ณ , ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฉํ ์ ์๋ ๊ณต์ฉ ์ปดํผ๋ํธ๋๊น์.์ถ๊ฐ๋ก ๊ถ๊ธํ์ ์ ์์ผ๋ฉด ํธํ๊ฒ ์ง๋ฌธ์ฃผ์ธ์! ๊ฐ์ฌํฉ๋๋ค.
- 0
- 1
- 61
Q&A
ํตํฉ ํ ์คํธ์์ API ์์ฒญ์ ๋ํ ๊ฒ์ฆ์ ์ด๋ฃจ์ด์ง์ง ์์๋ ๊ด์ฐฎ์๊น์?
๋ต๋ณ์ด ์กฐ๊ธ ๋ฆ์๋ค์!์นํ๋ ์๋ ํ์ธ์. ์ ํํ๊ฒ ํ์ ํ์ จ์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์๋ต์ด๋ผ๊ณ ๊ฐ์ ์ ์งํํ๊ธฐ ๋๋ฌธ์ ๋น ๋ฅธ ํ ์คํธ, ๋ค์ํ ์๋๋ฆฌ์ค ๊ฒ์ฆ, ํ๋ฉด์ ์ง์คํ ์ ์๋ ๋ถ๋ถ๋ค์ด ์ฅ์ ์ผ๋ก ์์ง๋ง, ๋ชจํนํ๋ ์ง์ ์ด ์๊ธฐ๊ฒ ๋๋ฉด ์ ๋๋ก ๊ฒ์ฆ์ ๋ชปํ๊ฒ ๋๋ ๋ถ๋ถ์ด ์๊ธฐ๊ฒ ๋ฉ๋๋ค. MSW๋ฅผ ๊ตฌ์ฑํ๋ ๊ฒ ๋ํ ์ค์ ๊ตฌํ๊ณผ ์ฑํฌ๊ฐ ์๋ง๊ฒ ๋ ์ ์๋ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๊ฒ์ฆ์ด ์ ํํ์ง ์์ ์ ์๊ตฌ์.์ด๋ฐ ๊ฒฝ์ฐ์๋ 2๋ถ์์ ์๊ฐ๋๋ E2E ํ ์คํธ๊ฐ ์ด๋์ ๋ ํด๊ฒฐ์ฑ ์ด ๋ ์ ์๋ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ค์ API ํต์ ์ ๋ฐ์์ํค๊ณ ์๋ฒ์์ ์๋ต์ ๋ฐ์ ํด๋น ์๋๋ฆฌ์ค์ ๋ง์ถฐ ๊ฒ์ฆ์ ์งํํ ์ ์์ผ๋๊น์.์ฑ ๊ด์ ์์์ ์ ์ฒด์ ์ธ ํ๋ฆ์ ๊ฒ์ฆํ๊ธฐ์ ์ ์ ํ ๋ถ๋ถ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ํน์ ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์์ผ์๋ฉด ํธํ๊ฒ ๋ต๋ณ์ฃผ์ธ์!
- 0
- 2
- 65
Q&A
e2e ํ ์คํธ CI , ์๋ฒ๋น์ฉ
์๋ ํ์ธ์ ์ฌ์ด๋!๋ง์ํด์ฃผ์ ๋๋ก e2e ํ ์คํธ๋ ์ค์ ์ฌ์ฉ์์ ๊ฐ์ ํ๊ฒฝ์์ ์ ์ฒด ์์คํ ์ ํ๋ฆ์ ๊ฒ์ฆํ๋ ๋งค์ฐ ์ค์ํ ๊ณผ์ ์ด์ง๋ง, ์คํ ์๊ฐ๊ณผ ๋น์ฉ์ด ๋ง์ด ๋ค์ด ๊ด๋ฆฌํ๊ธฐ๊ฐ ๊น๋ค๋กญ์ฃ . ๋จ์ ํ ์คํธ๋ ํตํฉ ํ ์คํธ์ ๋นํด ์ฆ๊ฐ์ ์ธ ํผ๋๋ฐฑ์ ๋ฐ๊ธฐ ์ด๋ ต๊ณ ๊ฐ๋ฐ ์์ฐ์ฑ์ ์ ํดํ ์๋ ์์ต๋๋ค.์ง๋ฌธ ์ฃผ์ ๋ถ๋ถ๊ณผ ์ฝ๊ฐ์ ๋ค๋ฅด์ง๋ง, ์ ๋ ๊ฐ์ธ์ ์ผ๋ก ๊ธฐ๋ฅ ๊ด์ ์์์ ํ ์คํธ์์ Node.jsํ๊ฒฝ์์ ๊ตฌ๋๋๋ ๋จ์-ํตํฉํ ์คํธ์ E2E ํ ์คํธ๊ฐ ์๋ค๋ฉด ๋ ๋ค ๊ฒ์ฆ์ด ๊ฐ๋ฅํ ๊ฒฝ์ฐ ๋จ์ - ํตํฉ ํ ์คํธ์ ์์ฑ์ ํด E2E ํ ์คํธ์์ ์ด์์ด ๋์ด์ผ ํ๋ ํ ์คํธ๋ค์ ๊ฐ๋ฅํ๋ฉด ์ค์ํ ์๋๋ฆฌ์ค ์์ฃผ๋ก ์ ์งํ๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์์ต๋๋ค.๋ํ, Playwright์ ๊ฒฝ์ฐ ์ด๋ฏธ ์ ๊ณตํ๊ณ ์๊ณ , Cypress์ ๊ฒฝ์ฐ ์ ๋ฃ ๊ฒฐ์ ๋ Sorry Cypress ๋ฑ์ ์จํ๋ ๋ฏธ์ค ํํ๋ก ๋ฌด๋ฃ๋ก ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ๋ค์ ํ์ฉํด ํ ์คํธ๋ฅผ ๋ณ๋ ฌ๋ก ๊ตฌ๋ํ๋ ๋ฐฉ์๋ ์๊ฐ์ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ถ๊ฐ๋ก ์ฌ์ด๋๊ป์ ๋ฆฌ์์นํ์ ์ค์ผ์ค ์คํ(Nightly/์ฃผ๋ง)๊ณผ ์จ๋๋งจ๋ ์คํ(PR ์ฝ๋ฉํธ/์๋ ํธ๋ฆฌ๊ฑฐ)์ ๋ณํํ๋ ์ ๋ต์ ํ์ ์์ ๋งค์ฐ ๋ง์ด ์ฐ์ด๋ ๋ฐฉ๋ฒ์ ๋๋ค. ์ค์ ๋ก ๋ง์ ํ์ด ์ด ๋ ๊ฐ์ง ๋ฐฉ์์ ๊ธฐ๋ณธ ์ถ์ผ๋ก ์ผ์ E2E ํ ์คํธ๋ฅผ ๊ด๋ฆฌํ๊ณ ์์ต๋๋ค. ๊ฒ์ฆํด์ผ ํ๋ ์๋๋ฆฌ์ค๋ณ๋ก ์ค์๋, ์ํฉ์ ๋ฐ๋ผ ๊ทธ๋ฃนํ์ ํ๊ณ ํ ์คํธ๋ฅผ ๋ง์ํด์ฃผ์ ๋๋ก ์ด์ํ๋ค๋ฉด ์๊ฐ์ ์กฐ๊ธ ๋ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ข์ ์ง๋ฌธ ๊ฐ์ฌํฉ๋๋ค!ํน์ ์ถ๊ฐ๋ก ๊ถ๊ธํ์ ์ ์๋ค๋ฉด ํธํ๊ฒ ๋จ๊ฒจ์ฃผ์ธ์~
- 0
- 1
- 64
Q&A
๋จ์ธ๋ฌธ ์์์ ๋ฐ๋ผ ํ ์คํธ ๊ฒฐ๊ณผ๊ฐ ์ ๋ฌ๋ผ์ง๋์?
์๋ ํ์ธ์ Einere๋~!์ฐ์ ๋ง์์ฃผ์ ๋๋ก ์๋์ ์ฝ๋๋ ์ ์์ ์ผ๋ก ํต๊ณผํด์ผ ํฉ๋๋ค.expect(screen.getByTestId('cart-icon')).toBeInTheDocument(); expect( await screen.findByRole('button', { name: 'Maria' }), ).toBeInTheDocument(); expect(screen.getByText('2')).toBeInTheDocument(); NavigationBar.jsx ํ์ผ์ ๋ก๊ทธ์ธ ํ์ ๊ฒฝ์ฐ ํด๋น ์ฅ๋ฐ๊ตฌ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์์ ๊ฐ์ ธ์ ์ค์ ํ๋ ์ฝ๋๊ฐ ์๋๋์.const { data, remove } = useProfile({ config: { onSuccess: profile => { setUserData(profile); // ์ฅ๋ฐ๊ตฌ๋ ๋ฐ์ดํฐ ์ค์ initCart(profile.id); }, enabled: !!isLogin, }, });๋ก๊ทธ์ธ ์ํ์ผ ๊ฒฝ์ฐ, ํ๋กํ ์กฐํ API๊ฐ ์คํinitCart(userId)์คํ๋ก์ปฌ ์คํ ๋ฆฌ์ง์์ ํด๋น userId์ ํด๋นํ๋ cart ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ ์ค์ (/store/cart.js))ํ ์คํธ ํ๊ฒฝ์์๋ ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ์ง ์์3๋ฒ์งธ use case๋ฅผ ๋์น์ฑ๋ก ํ ์คํธ ๋ก์ง์ด ์์ฑ๋์ด ์ฝ๋ ์์ ์ด ํ์ํ ๋ถ๋ถ์ ๋๋ค.์๋์ ์ฝ๋์ฒ๋ผ ํ ์คํธ ํ๊ฒฝ์ ๋ก์ปฌ ์คํ ๋ฆฌ์ง์๋ cart mock ๋ฐ์ดํฐ๋ฅผ ์ค์ ํ๋ฉด ํ ์คํธ๋ ์ ์์ ์ผ๋ก ํต๊ณผํฉ๋๋ค.import { screen, within } from '@testing-library/react'; import { rest } from 'msw'; import React from 'react'; import NavigationBar from '@/pages/common/components/NavigationBar'; // ๋ชจ๋ ์ถ๊ฐ import { setCartToLocalStorage } from '@/store/cart'; import { mockUseUserStore, mockUseCartStore, } from '@/utils/test/mockZustandStore'; // ... beforeEach(() => { // ... const cart = { // ... }; // ์๋ ์ฝ๋ ์ถ๊ฐ setCartToLocalStorage(cart, userId); mockUseCartStore({ cart }); });์ ๋ฆฌํ์๋ฉด ๋ง์ํ์ ๋๋ก ๋จ์ธ๋ฌธ์ ์์์ ๋ฌด๊ดํ๊ฒ ํ ์คํธ๊ฐ ํต๊ณผํ๋ ๊ฒ์ด ๋ง์ต๋๋ค.(์ฝ๋ ์์ ๋งํฌ)์ ๋ณดํด์ฃผ์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค..!๊ฐ์ฌํฉ๋๋ค.
- 0
- 2
- 100
Q&A
useNavigate ํ ์คํธ ์, ๊ฒ์ฆ ๋์ ์ง๋ฌธ์ ๋๋ค.
์๋ ํ์ธ์! ๋ต๋ณ์ ๋จ๊ธฐ๋ ค๊ณ ํ๋๋ฐ, ์๋ AI๊ฐ ๋ต๋ณ์ ๋๋ฆ ์ ํํ๊ฒ ๋จ๊ฒจ๋จ๋ค์ ใ ใ ๋จ์ ํตํฉํ ์คํธ์ ์์ด์๋ ์ค์ ํ์ด์ง ์ด๋์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์๋์ง๋ฅผ ๊ฒ์ฆํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์, ๊ทธ๋ฆฌ๊ณ ํด๋น ๋์์ ๊ตฌํํ๋๋ฐ ์์ด์ ์ด๋ฏธ ๊ตฌํ๋์ด์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ง์ํด์ฃผ์ ๊ฒ์ฒ๋ผ ๊ฒ์ฆ์ ํ๋ค๊ณ ํด์ ๋ ๋์ ์ ๋ขฐ์ฑ์ ์ป๊ธฐ๋ ์ด๋ ค์ธ ๊ฒ ๊ฐ์์. ๋ชจํน์ ์ด๋ ค์, ๋ณต์ก์ฑ๋ ๋ ๋์ด๋ ๊ฒ ๊ฐ๊ตฌ์.์ด๊ฐ์ ๋งฅ๋ฝ์์ ์๋ ๋ต๋ณ์ ์ฐธ๊ณ ํด์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค!
- 0
- 2
- 110
Q&A
๊ฐ์ ์์ํ๋ก์ ํธ ์ ๋ฐ์ดํธ์ข ๋ถํ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์ ใ ใ ํ๋ก์ ํธ ์ธํ ์ ์ด๋ ค์์ ๊ฒช๊ณ ๊ณ์๊ตฐ์..ํน์ ์ด๋ค ๋ถ๋ถ ์ด๋ ค์ฐ์ จ๋์ง ๋ง์ํด์ฃผ์๋ฉด ์ต๋ํ ๋น ๋ฅด๊ฒ ๋ต๋ณ ๋๋ ค๋ณด๊ฒ ์ต๋๋ค~ ํธํ๊ฒ ์ง๋ฌธ ๋จ๊ฒจ์ฃผ์ธ์~
- 2
- 2
- 157






