Test - Gaia3D/mago3djs GitHub Wiki

mago3djs๋Š” Jasmine (mocha + chai)์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. Jasmine ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Behavior-Driven Javascript ์œผ๋กœ, ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ api ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Test Runner Karma์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์ •

npm install mocha chai โ€“g
npm install --save-dev mocha chai karma karma-browserify karma-chai karma-chrome-launcher karma-firefox-launcher karma-html-reporter karma-ie-launcher karma-mocha karma-mocha-reporter karma-phantomjs-launcher karma-spec-reporter

Spec ์ด๋‚˜ Suite ์ˆ˜ํ–‰์„ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

์‚ญ์ œ๋Š” ๋งค์šฐ ๋น„ํšจ์œจ์ ์ด๊ณ  ์ฃผ์„์€ ๊ท€์ฐฎ์€ ์ž‘์—…์ž…๋‹ˆ๋‹ค. Jasmine์—์„œ๋Š” ์•„์ฃผ ํŽธ๋ฆฌํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค. it์ด๋‚˜ describe์•ž์— x ๋งŒ ์ถ”๊ฐ€ํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (ex : xit, xdescribe)

์ŠคํŒŒ์ด(Spy)

Jasmine ์œผ๋กœ ํ…Œ์ŠคํŠธ ์ž‘์„ฑ ์‹œ, Spy ๋กœ ์‰ฝ๊ฒŒ Mock ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ธฐ์—” ๋น„์šฉ๊ณผ ์‹œ๊ฐ„์ด ๋งŽ์ด ๋“ค๊ฑฐ๋‚˜ ์˜์กด์„ฑ์ด ๊ธธ๊ฒŒ ๊ฑธ์ณ์ ธ ์žˆ์–ด ์ œ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒฝ์šฐ, ๊ฐ€์งœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์–ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

Mock ๊ฐ์ฒด๋Š” ์–ธ์ œ ํ•„์š”ํ•œ๊ฐ€?

  • ํ…Œ์ŠคํŠธ ์ž‘์„ฑ์„ ์œ„ํ•œ ํ™˜๊ฒฝ ๊ตฌ์ถ•์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ
    • ํ™˜๊ฒฝ ๊ตฌ์ถ•์„ ์œ„ํ•œ ์ž‘์—… ์‹œ๊ฐ„์ด ๋งŽ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— Mock ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ํŠน์ • ๋ชจ๋“ˆ์„ ๊ฐ์กฐ ์žˆ์ง€ ์•Š์•„์„œ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜์ง€ ๋ชปํ•  ๋•Œ ๋˜๋Š” ํƒ€ ๋ถ€์„œ์™€์˜ ํ˜‘์˜๋‚˜ ์ •์ฑ…์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ๊ฐ€ ํŠน์ • ๊ฒฝ์šฐ๋‚˜ ์ˆœ๊ฐ„์— ์˜์กด์ ์ธ ๊ฒฝ์šฐ
  • ํ…Œ์ŠคํŠธ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋Š” ๊ฒฝ์šฐ
  • ๊ฐœ์ธ PC์˜ ์„ฑ๋Šฅ์ด๋‚˜ ์„œ๋ฒ„์˜ ์„ฑ๋Šฅ๋ฌธ์ œ๋กœ ์˜ค๋ž˜ ๊ฑธ๋ฆด์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โš ๏ธ **GitHub.com Fallback** โš ๏ธ