runWithMockContext๋?
runWithMockContext๋ Sonamu์ ํ ์คํธ ํ๊ฒฝ์์ ๊ฒฉ๋ฆฌ๋ Context๋ฅผ ์ ๊ณตํ๋ ํจ์์ ๋๋ค. Sonamu๋ AsyncLocalStorage๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ ์์ฒญ๋ง๋ค ๋ ๋ฆฝ๋ Context๋ฅผ ์ ์งํ๋๋ฐ, ํ ์คํธ์์๋ ๋์ผํ ๋ฉ์ปค๋์ฆ์ ์ฌ์ฉํฉ๋๋ค.Context์ ๊ตฌ์ฑ ์์
Mock Context๋ ๋ค์๊ณผ ๊ฐ์ ์์ฑ์ ํฌํจํฉ๋๋ค:๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
์ผ๋ฐ ํ ์คํธ (๋น์ธ์ฆ)
Sonamu์์ ์ ๊ณตํ๋test() ํจ์๋ ์๋์ผ๋ก runWithMockContext๋ฅผ ์คํํฉ๋๋ค.
์ง์ ์ฌ์ฉํ๊ธฐ
runWithMockContext๋ฅผ ์ง์ ํธ์ถํ ์๋ ์์ต๋๋ค:
์ธ์ฆ๋ ์ฌ์ฉ์๋ก ํ ์คํธํ๊ธฐ
testAs() ์ฌ์ฉ
ํน์ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํ ์ํ๋ฅผ ์๋ฎฌ๋ ์ด์ ํ๋ ค๋ฉดtestAs()๋ฅผ ์ฌ์ฉํฉ๋๋ค:
ํ์ ์์ ์ฑ
testAs()๋ ์ ๋ค๋ฆญ์ ์ง์ํ์ฌ ํ์
์์ ์ฑ์ ๋ณด์ฅํฉ๋๋ค:
์ค์ ์์
Model ๋ฉ์๋ ํ ์คํธ
๊ถํ ๊ฒ์ฆ ํ ์คํธ
Context ์์ฑ ์กฐ์
ํน์ ์๋๋ฆฌ์ค๋ฅผ ํ ์คํธํ๊ธฐ ์ํด Context ์์ฑ์ ์์ ํ ์ ์์ต๋๋ค:test() vs testAs() ๋น๊ต
- test()
- testAs()
๋น์ธ์ฆ ํ
์คํธ์ฌ์ฉ ์๊ธฐ:
- ์ธ์ฆ์ด ํ์ ์๋ ๊ณต๊ฐ API ํ ์คํธ
- ์ธ์ฆ ์ฌ๋ถ์ ๋ฌด๊ดํ ๋ก์ง ํ ์คํธ
- Model์ ๊ธฐ๋ณธ CRUD ์์ ํ ์คํธ
๋ด๋ถ ๊ตฌ์กฐ
getMockContext()
Mock Context๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑ๋ฉ๋๋ค:ip: ๋ก์ปฌ ํ๊ฒฝ์ ๋ํ๋ด๋127.0.0.1session: ๋น ๊ฐ์ฒด๋ก ์ด๊ธฐํuser: ๊ธฐ๋ณธ๊ฐ์null(๋น์ธ์ฆ ์ํ)passport: Mock ํจ์๋ก ์ค์ ์ธ์ฆ ๋ก์ง์ ์คํ๋์ง ์์naiteStore: ๊ฐ ํ ์คํธ๋ง๋ค ๋ ๋ฆฝ๋ ๋ก๊ทธ ์ ์ฅ์
AsyncLocalStorage ๊ฒฉ๋ฆฌ
Sonamu๋ Node.js์AsyncLocalStorage๋ฅผ ์ฌ์ฉํ์ฌ Context๋ฅผ ๊ฒฉ๋ฆฌํฉ๋๋ค:
- ํ ์คํธ ๊ฐ Context๊ฐ ์์ด์ง ์์
- ๋ณ๋ ฌ ํ ์คํธ ์คํ ์์๋ ์์
- ๊ฐ ํ ์คํธ๋ ๋ ๋ฆฝ๋ Naite ๋ก๊ทธ ์ ์ฅ์๋ฅผ ๊ฐ์ง
test() ๋ํผ์ ์๋ ์๋ฆฌ
Sonamu์test() ํจ์๋ Vitest์ test()๋ฅผ ๋ํํ์ฌ ์๋์ผ๋ก Mock Context๋ฅผ ์ ๊ณตํฉ๋๋ค:
- Vitest์
test()์คํ runWithMockContext()๋ก Mock Context ์์ฑ ๋ฐ ํ์ฑํ- ํ ์คํธ ํจ์ ์คํ
- ์ฑ๊ณต/์คํจ ์ฌ๋ถ์ ๋ฌด๊ดํ๊ฒ Naite ๋ก๊ทธ ์์ง
- Context ์๋ ์ ๋ฆฌ
testAs() ๊ตฌ์กฐ
testAs()๋ ์ฌ์ฉ์ ์ ๋ณด๋ฅผ ์ถ๊ฐ๋ก ๋ฐ์ Context๋ฅผ ํ์ฅํฉ๋๋ค: