๋๋ ์ง๊ธ๊น์ง React ๊ตฌ์ฑ ์์๋ฅผ ํ ์คํธํ๋ Jest๋ฅผ ์ฌ๋ํด ์์ต๋๋ค.
๋๋ ๋
ธ๋ ๋ฐฑ์๋๋ฅผ ํ
์คํธํ๊ธฐ ์ํด Mocha/Jasmine์ ์ฌ์ฉ/์ฌ์ฉํด ์์ผ๋ฉฐ, ๋ฌธ์(React)์์ Jest๋ฅผ ๋ฐฑ์๋ ํ
์คํธ์ ์ฌ์ฉํ ์ ์๋์ง ๋ฌป๊ณ ์ถ์์ต๋๋ค. , React-Native, Async, Webpack, ์ฆ Node
)
๋ฐฉ๊ธ ์ฌ์ฉํ๋ ค๊ณ ์๋ํ๋๋ฐ ๋ถํํ๋ ์ฆ๊ฐ์ ์ธ ์ฅ์ ๋ฌผ์ ๋ถ๋ช์ณค์ต๋๋ค. brcypt
๋ [SECURITY] node-uuid: crypto not usable, falling back to insecure Math.random()
๊ฒฝ๊ณ ๋ฅผ ํธ๋ฆฌ๊ฑฐํ๊ณ ๋ฐํ์ ์ค๋ฅ( TypeError: Path must be a string. Received undefined
)๋ก ์ธํด ํ
์คํธ๊ฐ ์คํจํฉ๋๋ค.
์ง๊ธ ๋ฐฑ์๋ ํ ์คํธ์ Jest๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๊น? ์๋๋ฉด ํ๋ก์ ํธ ๋ฒ์์ ์ผ๋ถ๊ฐ ์๋๋ฉฐ Jasmine๊ณผ ๊ฐ์ ๊ฒ์ด ๋ ์ ํฉํฉ๋๊น?
์ด๋ค ์ข
๋ฅ์ ๋ฐฑ์๋ ํ
์คํธ๋ฅผ ํ๋ ค๊ณ ํฉ๋๊น? Jest ์์ฒด๋ ํ
์คํธ์ Jest๋ฅผ ์ฌ์ฉํ๊ณ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ
์คํธ์ Jest๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋ npm install
๋ฐ npm test
์ฌ์ฉํ ์ ์๋ ์ ์ฅ์๋ฅผ github์ ์ ๊ณตํ ์ ์์ต๋๊น?
๋ด๊ฐ ์ถ์ฒํ๋ ๋ ๊ฐ์ง: "automock": false
๋ฐ "testEnvironment": "node"
์ค์ ์ ์๋ํฉ๋๋ค. ๋ค๋ฅธ ํ
์คํธ๊ฐ ์ด์ ์์กดํ๋ ๊ฒฝ์ฐ ๋ณ๋์ Jest ๊ตฌ์ฑ์ ๋ง๋ค๊ณ --config=pathToConfig.json
jest๋ฅผ ์คํํ๊ณ modulePathIgnorePatterns
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฐํธ์๋ ํ
์คํธ๋ฅผ ๋ฌด์ํ ์ ์์ต๋๋ค.
๋น ๋ฅธ ๋ต๋ณ ๊ฐ์ฌํฉ๋๋ค @cpojer!
Jest๋ฅผ Node์ ํจ๊ป ์ฌ์ฉํ ์ ์๋ค๋ ์์์ ๋ค์ผ๋ ๊ธฐ์ฉ๋๋ค! ๋ณธ์ง์ ์ผ๋ก ํ ์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ด๊ณ API๊ฐ ์๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๊ทธ๋ ๊ฒ ํ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ์ง๋ง Node ๋ฐฑ์๋ ๋ฐ ๋๋ถ๋ถ react(๋๋ ๋ด Google-Fu ๊ทธ๋ฅ ์ถฉ๋ถํ์ง ์์์ต๋๋ค).
๋๋ ์ด๋ฏธ ๋ด node_modules
์กฐ๋กฑํ๊ณ ์์๊ธฐ ๋๋ฌธ์ ์ฌ์ค์ด ์๋์์ง๋ง testEnvironment: node
์ด ํธ๋ฆญ์ ์ํํ์ต๋๋ค!
๊ฑด๋ฐฐ!
์, ๊ธฐ๋ณธ ํ๊ฒฝ( jsdom
)์ด ํญ์ ๋
ธ๋ ํ
์คํธ์ ์ ํฉํ ๊ฒ์ ์๋๋๋ค. ๋ ๋ค๋ฅธ ์ด์ ์ jsdom์ด ๋ค์ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋
ธ๋ ํ๊ฒฝ์ด 500ms ๋ ๋น ๋ฅด๊ฒ(ํจ๊ณผ์ ์ผ๋ก ์ฆ์) ๋ก๋๋๋ค๋ ๊ฒ์
๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
์ด๋ค ์ข ๋ฅ์ ๋ฐฑ์๋ ํ ์คํธ๋ฅผ ํ๋ ค๊ณ ํฉ๋๊น? Jest ์์ฒด๋ ํ ์คํธ์ Jest๋ฅผ ์ฌ์ฉํ๊ณ ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ํ ์คํธ์ Jest๋ฅผ ์ฌ์ฉํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ฃผ๋
npm install
๋ฐnpm test
์ฌ์ฉํ ์ ์๋ ์ ์ฅ์๋ฅผ github์ ์ ๊ณตํ ์ ์์ต๋๊น?๋ด๊ฐ ์ถ์ฒํ๋ ๋ ๊ฐ์ง:
"automock": false
๋ฐ"testEnvironment": "node"
์ค์ ์ ์๋ํฉ๋๋ค. ๋ค๋ฅธ ํ ์คํธ๊ฐ ์ด์ ์์กดํ๋ ๊ฒฝ์ฐ ๋ณ๋์ Jest ๊ตฌ์ฑ์ ๋ง๋ค๊ณ--config=pathToConfig.json
jest๋ฅผ ์คํํ๊ณmodulePathIgnorePatterns
๋ฅผ ์ฌ์ฉํ์ฌ ํ๋ฐํธ์๋ ํ ์คํธ๋ฅผ ๋ฌด์ํ ์ ์์ต๋๋ค.