API Mocking์ด๋?
ํ ์คํธ์์ ์ธ๋ถ ์์กด์ฑ(API, ํ์ผ ์์คํ , ์๊ฐ ๋ฑ)์ ์ค์ ๋ก ์คํํ์ง ์๊ณ ๊ฐ์ง ๋์์ ์ ๊ณตํ๋ ๊ฒ์ Mocking์ด๋ผ๊ณ ํฉ๋๋ค. ์ด๋ฅผ ํตํด:- ์ธ๋ถ ์๋น์ค ์ฅ์ ์ ๋ฌด๊ดํ๊ฒ ํ ์คํธ ์คํ
- ๋คํธ์ํฌ ํธ์ถ ์์ด ๋น ๋ฅธ ํ ์คํธ
- ์์ธก ๊ฐ๋ฅํ ๊ฒฐ๊ณผ๋ก ์์ ์ ์ธ ํ ์คํธ
- ๋น์ฉ์ด ๋ฐ์ํ๋ ์์ (๊ฒฐ์ , SMS ๋ฑ) ํํผ
Mocking์ ์ข ๋ฅ
Sonamu์์๋ ์ธ ๊ฐ์ง ๋ฐฉ์์ Mocking์ ์ง์ํฉ๋๋ค:Vitest Mock
Vitest์ ๊ธฐ๋ณธ Mocking ๊ธฐ๋ฅ
Naite Mock
Naite๋ฅผ ํ์ฉํ ๋์ Mocking
Manual Mock
์๋์ผ๋ก ๊ตฌํํ Mock ๊ฐ์ฒด
Vitest Mock ์ฌ์ฉํ๊ธฐ
๋ชจ๋ Mocking
์ธ๋ถ ๋ชจ๋์ ๋์์ ๊ฐ์ง๋ก ๋์ฒดํฉ๋๋ค:ํจ์ Spy
์ค์ ํจ์์ ํธ์ถ์ ์ถ์ ํฉ๋๋ค:ํ์ด๋จธ Mocking
์๊ฐ ๊ด๋ จ ํจ์๋ฅผ ์ ์ดํฉ๋๋ค:bootstrap()๊ณผ ํ์ด๋จธ: Sonamu์
bootstrap() ํจ์๋ afterEach์์ ์๋์ผ๋ก vi.useRealTimers()๋ฅผ ํธ์ถํ์ฌ ํ์ด๋จธ๋ฅผ ๋ณต์ํฉ๋๋ค. ๋ณ๋๋ก ํธ์ถํ ํ์๊ฐ ์์ต๋๋ค.๋ ์ง Mocking
ํ์ฌ ์๊ฐ์ ๊ณ ์ ํฉ๋๋ค:Naite Mock ์ฌ์ฉํ๊ธฐ
Naite์ ํน๋ณํ ํค ํจํด์ ์ฌ์ฉํ์ฌ ๋์ ์ผ๋ก Mock์ ์์ฑํฉ๋๋ค.ํ์ผ ์์คํ Mocking
๊ฐ์ ํ์ผ ์์ฑ
mock:fs/promises:virtualFileSystem ํค๋ก ๊ฐ์ ํ์ผ์ ๋ฑ๋กํฉ๋๋ค:
์ค์ ์์ : ํ์ผ ์ ๋ก๋ ํ ์คํธ
Naite Mock์ ์๋ ์๋ฆฌ
Naite๋ ํน๋ณํ ํค ํจํด(mock:*)์ ๊ฐ์งํ์ฌ ํด๋น ๋์์ ๊ฐ๋ก์ฑ๋๋ค:
Manual Mock ๊ตฌํํ๊ธฐ
๋ณต์กํ ์ธ๋ถ ์๋น์ค๋ ์ง์ Mock ํด๋์ค๋ฅผ ๊ตฌํํฉ๋๋ค.Mock ํด๋์ค ์์ฑ
Mock ์ฌ์ฉํ๊ธฐ
์ค์ ํ์ฉ ์์
์ธ๋ถ API ํธ์ถ Mocking
SMS ๋ฐ์ก Mocking
ํ์ผ ์ ๋ก๋ Mocking
ํ๊ฒฝ ๋ณ์ Mocking
Mocking ์ ๋ต
๊ณ์ธต๋ณ Mocking
ํ ์คํธ ๋ ๋ฒจ๋ณ Mocking:-
Unit ํ
์คํธ: ๋ชจ๋ ์์กด์ฑ Mock
-
Integration ํ
์คํธ: ์ธ๋ถ ์์กด์ฑ๋ง Mock
-
E2E ํ
์คํธ: Mocking ์ต์ํ
Mock ๋ฐ์ดํฐ ๊ด๋ฆฌ
ํ ์คํธ์ฉ Mock ๋ฐ์ดํฐ๋ฅผ ๋ณ๋ ํ์ผ๋ก ๊ด๋ฆฌํฉ๋๋ค:์ฃผ์์ฌํญ
๋ค์ ๋จ๊ณ
runWithMockContext
Mock Context๋ก ํ
์คํธํ๊ธฐ
Database Mocking
ํธ๋์ญ์
์ผ๋ก DB ํ
์คํธ ๊ฒฉ๋ฆฌ
Naite ๋ก๊น
ํ
์คํธ ๋ก๊ทธ ๊ธฐ๋ก ๋ฐ ์ถ์
Bootstrap
ํ
์คํธ ํ๊ฒฝ ์ด๊ธฐํ