--order
์ต์
์ ์ฌ์ฉํ๋ฉด ์ฌ๋๋ค์ด ์ฃผ๋ฌธ ์ข
์์ฑ์ ๋ฐ๊ฒฌ ํ ์ ์์ต๋๋ค. ์ธ ๊ฐ์ง ์ต์
์ --order random
, --order random:seed
๋ฐ --order default
์
๋๋ค. ๊ฐ ๋ฌด์์ ์ค์ํธ๋ ์ฌ์ฉ ๋ ์๋๋ฅผ ์ถ๋ ฅํฉ๋๋ค.
RSpec์ ์ด๊ฒ์ ๊ตฌํํ์ง๋ง ๊ธฐ๋ณธ ์์๋ ๋ฌด์์์
๋๋ค. ๋ชจ์นด๋ ๊ทธ๋ ๊ฒ ํ ํ์๊ฐ ์์ต๋๋ค. --order
๋งค๊ฐ ๋ณ์์ ๋ํ ๋ช ๊ฐ์ง ์ธ๋ถ ์ฌํญ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. http://blog.davidchelimsky.net/2012/01/04/rspec-28-is-released/
์ด๋ป๊ฒ ์๊ฐํด?
meh, ๋๊ตฌ์ ๋์์์ด ๊ต์ฐจ ํ ์คํธ ์ข ์์ฑ์ ํผํ๋ ๊ฒ์ ๋งค์ฐ ์ฝ์ต๋๋ค.
to avoid cross-test dependencies without help of tooling
๋ ์ฝ์ง๋ง, ์์ ์ฐจ๋ฆฌ์ง ์๊ณ ํ
์คํธ ์ค์ํธ์ ์ด๋ฌํ ์ข
์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ๋ ์ฝ์ต๋๋ค. ํ
์คํธ ์ค์ํธ์ ๋ฒ๊ทธ๋ ์ผ๋ฐ์ ์ผ๋ก ํ
์คํธ ๋ ์์คํ
์ ๋ฒ๊ทธ๋ก ๋ณํ๋ฉ๋๋ค. ์ด๋ฌํ ๋ฒ๊ทธ๋ ์ฝ๋๊ฐ ํ
์คํธ ๋์์ด๊ธฐ ๋๋ฌธ์ ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋๊ตฌ์์ด ๊ต์ฐจ ํ ์คํธ ์ข ์์ฑ์ด ์๋์ง ํ ์คํธํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
@visionmedia , ์ฌ๊ณ ํด์ฃผ์ธ์.
+1 @yanovich. ์๋ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ ์์ ์์ ์ต์ ์ ์ฌ์ฉํฉ๋๋ค. ์ด๊ฒ์ CI ํ๊ฒฝ์์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค.
@visionmedia , mongoose ๋ชจ๋ธ์ ๊ต์ฐจ ํ
์คํธ ์ข
์์ฑ์ ์ฌ์ด ์๋ฅผ ์ ๊ณตํฉ๋๋ค. mongoose.model 'User', UserSchema
๋ mongoose.models
๋ฐฐ์ด์ ๋ชจ๋ธ์ ์ถ๊ฐํฉ๋๋ค. ๋ฐ๋ผ์ mongoose.models์๋ก๋๋๋ ์ฌ์ฉ์ ๋ชจ๋ธ์ ์์กดํ๋ ํ์ผ์ ์์ฑ ํ ์ ์์ต๋๋ค. Comment.find().populate('_user').exec(cb)
๋ฅผ ์๋ก ๋ค์ด ๋ณด๊ฒ ์ต๋๋ค. ์ฌ์ฉ์ ํ
์คํธ๊ฐ ์ฃผ์ ํ
์คํธ ์ ์ ์คํ๋๋ฉด ์๋ง๋ require('./models/user')
(๋๋ ๋ฌด์ธ๊ฐ)๊ฐ ์ฌ์ฉ์ ๋ชจ๋ธ์ mongoose.models์๋ก๋ํ๊ธฐ ๋๋ฌธ์ ์ ์์ ์ผ๋ก ์คํ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ ์ฌ์ฉ์ ํ
์คํธ ์ ์ ์ฃผ์ ํ
์คํธ๊ฐ ์คํ๋๋ฉด Schema hasn't been registered for model "User"
์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค. ์ด๊ฒ์ ์ฃผ์ API๊ฐ ์ฌ์ฉ์ API๋ณด๋ค ๋จผ์ ์คํ๋๊ณ ์ฃผ์ ํ์ผ์ด ํ์ผ ๊ฐ ์ข
์์ฑ์ด ์์์ ์์ง ๋ชปํ๋ ๊ฒฝ์ฐ ํ๋ก๋์
์์ ๋ฐ์ํ ์ ์์ต๋๋ค.
ํ ์คํธ ํ์ผ์ require ( './ models / user') (๋๋ ๊ธฐํ)๊ฐ ์๊ณ ์ฌ์ฉ์๋ฅผ mongoose.models๋ก๋ก๋ํ๋ ๊ฒฝ์ฐ ํ ์คํธ ์์ ์ ํ๋ก๋์ ๋ฌธ์ ๊ฐ ๊ณ์ ๋ฐ์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์์์ ์์๋ฅผ ๊ฐ๋ ๊ฒ์ ์ด์ ๊ฐ์ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ ๋ฐ ์ ์ฉํ ๋๊ตฌ ์ค ํ๋์ ๋๋ค.
๋๋ ๊ทธ๊ฒ์ ์ ํํํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋น์ ์ ์๊ฐ์ ๋ฃ๊ธฐ๋ฅผ ๊ธฐ๋ํฉ๋๋ค.
๋ฏธ์ํฉ๋๋ค. ๊ณผ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ชจ์นด๋ ๊ทธ๋๋ก ๋ถํ์ด ์์ต๋๋ค. ๋ ๋ง์ ๊ด์ฌ์ด ์๋ค๋ฉด ์๋ง๋ ์ ์ง ๊ด๋ฆฌ ๋ถ๋ด์ด ๋ ๊ฒ์ ๋๋ค.
์๊ฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ฝ๋์์๋ ๋๋ถ๋ถ์ ๊ฒ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก, ์๋ ์ฌ๋๋ค์ ์ด๊ฒ์ ์๋์ ์ผ๋ก ํผํ๋ ๊ฒ์ด ์ฝ์ต๋๋ค. ์ค์๋กํ์ง ์๋ ๊ฒ์ด ๋ ์ด๋ ต์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ๋ฌธ์ ๋ผ๋ ๊ฒ์ ๋ชจ๋ฅธ๋ค๋ฉด (์ : ํผํฉ ๋ ๊ฒฝํ ํ) ์ผ์ด๋ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. :)
๊ฝค ๋ง์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ ๊ด์ฌ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค (๋ง์ ์ฌ๋๋ค์ด ๊ทธ๊ฒ์ด minitest์ ์ต๊ณ ์ ๊ธฐ๋ฅ ์ค ํ๋๋ผ๊ณ ์๊ฐํฉ๋๋ค). ํฉ์ณ์ง๋ฉด ๊ธฐ๊บผ์ด ๊ตฌํํ ์ ์์ต๋๋ค.
+1 ๊ด์ฌ์ด ์์ต๋๋ค.
๊ฐ์ง๊ณ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค! ํ์ผ ์ด๋ฆ์ ๋ณ๊ฒฝํ์ฌ ํ ์คํธ๊ฐ ์คํจํ๋ ๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค.
+1 ์ด๊ฒ์ ์ค์ํฉ๋๋ค
: +1 :
: +1 :
+1 ์ด๊ฒ์ ์๋นํ ํฐ ๊ฒฐํจ์ ๋๋ค.
rspec ์๋ฏธ๋ก ์ ๋งค์ฐ ๊ฒฌ๊ณ ํฉ๋๋ค. ์ฃผ๋ฌธ ์๋๋ฅผ ์ ๋ฌํ๊ฑฐ๋ ๋ฌด์์๋ก ์ ํํ ์ ์์ต๋๋ค. ๋ฌด์์๋ก ์๋๋ฅผ ์ ํํ๋ฉด ์ถ๋ ฅํ๋ฏ๋ก ์ฌํํ๊ธฐ ์ฝ์ต๋๋ค.
๊ต์ฐจ ํ ์คํธ ์ข ์์ฑ์ ํผํ๋ ๊ฒ์ ์ข ์ข ์ฝ์ง ์์ต๋๋ค. ๋๋ก๋ ์๊ธฐ์น ์์ ๊ธ๋ก๋ฒ ์ํธ ์์ฉ์ผ๋ก ์ธํด ๋๋ก๋ ํธ๋ฆฌํ์ง ์์ต๋๋ค. ๋๋ ๋ชจ์นด๋ฅผ ์ฌ์ฉํ๋ ํ๋ก์ ํธ์ 50 % ์ด์์ด ์ฃผ๋ฌธ์ด ๋ฌด์์ ํ๋๋ฉด ํ ์คํธ ์คํจ๋ฅผ ๋ณด๊ฒ ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋ค์์ ํ ์คํธ ์คํ ์์์ ์์กดํ๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ ๋ช ๊ฐ์ง ์์ ๋๋ค.
https://github.com/visionmedia/mocha/blob/master/test/hook.async.js#L95
https://github.com/visionmedia/superagent/blob/master/test/node/not-modified.js#L31
์ด ๋ ๊ฐ์ง๋ http://visionmedia.github.io/mocha/ ์ ์์ ํ ์คํธ ๋ชจ์์ผ๋ก ๋์ด๋์ด ์์ผ๋ฉฐ ๋ฌธ์ ๋ฅผ ์ฐพ๋ ๋ฐ ๋ง์ ์๊ฐ์ ์๋นํ์ง ์์์ต๋๋ค.
๋ค์ ์ด์ด ๋ณผ๊ฒ์. ๋์์ด ๋ ๊ฒ ๊ฐ์์. ๋๊ตฌ์์ด ๊ต์ฐจ ํ ์คํธ deps๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ๋ฒ์ด ์์ง๋ง์ด๋ฅผ ์๋ํ ํ ์ ์๋ค๋ฉด ์ฌ๋๋ค์ ์๊ฐ์ ์ ์ฝ ํ ์ ์์ต๋๋ค.
์ด๊ฒ์ผ๋ก ์ฝ๊ฐ ๋์ ๋ณธ ํ์๋ ์ค์ํธ์ ๊ณ์ธต ์ ํน์ฑ์ผ๋ก ์ธํด ์ฌ์ํ์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ํ ์คํธ๋ ์ค์ํธ๋ก ๋ฐ๋ณตํ์ฌ ์คํ๋ฉ๋๋ค. _Tests_๋ฅผ ๋ฌด์์๋ก ์คํํ๋ ค๋ฉด ์ด๊ฑฐํ๊ณ ๋ฌด์์ ํ ํ ๋ค์ ๊ฑฐ๊พธ๋ก ์์ ํด์ผํฉ๋๋ค.
์ด๋ก ์ธํด before()
๋ฐ after()
Hooks๋ Suite์์ _n_ ๋ฒ ํ
์คํธ ๋น _n_ ๋ฒ ์คํ๋๊ธฐ ๋๋ฌธ์ ๋ค์ ์๋ฏธ๊ฐ ์์ต๋๋ค (๋๋ _worst_์ ๊ฒฝ์ฐ,ํ์ง๋ง ์ ์คํ ๊ฒฝ์ฐ์๋ง) ), ์ฐ๋ฆฌ๋ ์ง์์ ์ผ๋ก ์ปจํ
์คํธ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ์ฑ๋ฅ์ด ์ ํ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
์์์ ์๋๋ฅผ ์ฌ์ฉํ๊ณ ์๋ ์์ฑ ๋ ์๋๋ฅผ๋ณด๊ณ ํ๋ ๊ฒ์ ์ฌ์ํ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ๋ฆฌํฌํฐ๋์ด ์ ๋ณด์ ๋ํด ์์์ผ ํ ์ ์์ผ๋ฏ๋ก ๋ฆฌํฌํฐ์์ ๊ตฌํํด์ผํฉ๋๋ค.
๋ฌผ๋ก ์ฌ๊ธฐ์ ์ค๋ช ๋ ๋ด์ฉ์ด ์์ฒญ ๋ ๋ด์ฉ์ด๋ผ๊ณ ๊ฐ์ ํฉ๋๋ค. ์ด์ ๊ฐ์ ๊ธฐ๋ฅ์๋ ์ฌ์์ด ํ์ํฉ๋๋ค.
๋ค๋ฅธ ์ต์
์ผ๋ก๋ "์ค์ํธ ๋๋ค ํ"๋๋ "์ค์ํธ ๋ด ํ
์คํธ ๋๋ค ํ"๋๋์ด ๋์ ์กฐํฉ์ด ์์ต๋๋ค. ์ค์ง์ ์ผ๋ก ์ด๊ฒ์ describe()
describe()
๋ธ๋ก _A_์ ์์ผ๋ฉด _A_์ ๋ชจ๋ ํ
์คํธ๊ฐ ์คํ๋ ๋๊น์ง ๋ถ๋ชจ ๋๋ ํ์ before()
/ after()
)์ ๊ด๋ จํ์ฌ ๋ถํธ ํจ์ ์ ๋ฐํ์ง ์์ต๋๋ค.
๋ด๊ฐ (๊ทธ๋ฆฌ๊ณ ๋ค๋ฅธ ์ฌ๋๋ค์ด) ์๊ตฌํ๋ ๊ฒ์ ๊ฐ์ฅ ๊ฐ๋จํ ์ต์ ์ ๋๋ค.
๋๋ ์ค๊ฐ ์์ค์์ ๋ฌผ๊ฑด์ ์๋ ๋ฐ ๋ง์ ๊ฐ์น๊ฐ ์๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
ํ์คํ ํดํน์ด์ง๋ง ๊ฐ์ฅ ๋ฎ์ ์์ค์์ ์๋ํฉ๋๋ค https://github.com/syrnick/mocha/compare/random_order?expand=1&w=0
mocha - fail
connect - pass
superagent - fail
express - pass**
websocket.io - pass (can't tell for sure)
** ์ด๋ ์ชฝ์ด๋ ์ ์ฒด ํ ์คํธ ์ค์ํธ์ 100 ํ ์คํ ์ค 2 ๋ฒ์ ๊ฐํ์ ์ธ ์คํจ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋ค, ํ์คํ ๊ตฌํํ๊ธฐ๊ฐ ๋ ์ฝ์ต๋๋ค!
๋๋ ์ด๊ฒ์ ์ํด seedrandom lib๋ฅผ๋ณด๊ณ ์์๋ค; pass
์ต์
์ ์ฌ์ฉํ์ญ์์ค.
PR์ ๋ฐ์ ๋ค์ผ ๊ฒ์ ๋๋ค.
์์ผ๋ก ๋ฉฐ์น ๋์ ํด๋น ์ฝ๋๋ฅผ ์ ๋ฆฌํ๊ณ ํ ์คํธ ์ค์ํธ๋ฅผ ์กฐ์ ํ ๊ฒ์ ๋๋ค. ๋ฐ์ค์ด ์ด๊ฒ์ ๋ํ ์์กด์ฑ์ด ๋๋ฌด ๋ฌด๊ฒ์ต๋๊น? http://stackoverflow.com/questions/6274339/how-can-i-shuffle-an-array-in-javascript ์ ๊ฐ์ ๊ฐ๋ฒผ์ด ๊ฒ์ ์ฌ์ฉํ ์ ์์ต๋๋ค
@boneskull ๋๋ ์ด๊ฒ์ ๋ค์ ์ฌ๋ ๋น์ ์ ๊ฒฐ์ ์์ง์งํฉ๋๋ค. : +1 :
๋ค๋ฅธ ์ต์ ์ผ๋ก๋ "์ค์ํธ ๋๋ค ํ"๋๋ "์ค์ํธ ๋ด ํ ์คํธ ๋๋ค ํ"๋๋์ด ๋์ ์กฐํฉ์ด ์์ต๋๋ค.
๋๋ฅผ ์ํด ์ถฉ๋ถํ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๊น์ง ๋ฐ๋ณตํด์ ์ด๊ฑฐํ๊ณ ์์ ํ์๊ฐ ์์ต๋๋ค.
์ด๊ฒ์ด ๋ค์ด๊ฐ๋ค๋ ์์์ ๋ค์ผ๋ ๋ฐ๊ฐ์ต๋๋ค.
rspec์ด ์ฌ๊ท ์
ํ์ ์ฒ๋ฆฌํ๋์ง ๊ถ๊ธํฉ๋๋ค. ๋ณผ ๊ฐ์น๊ฐ์์ ์ ์์ต๋๋ค
๊ทธ๋ค์ ์ฝ๋์์?
2014 ๋
8 ์ 26 ์ผ ํ์์ผ์ Joshua Appelman [email protected]
์ผ๋ค :
@boneskull https://github.com/boneskull ๊ทํ์ ๊ฒฐ์ ์์ง์งํฉ๋๋ค.
์ด๊ฒ์ ๋ค์์ฌ์ญ์์ค. [์ด๋ฏธ์ง : : +1 :]๋ค๋ฅธ ์ต์ ์๋ "์ค์ํธ ๋ฌด์์ ํ"๋๋ "๋ด๋ถ ํ ์คํธ ๋ฌด์์ ํ
์ค์ํธ "๋๋์ด ๋์ ์กฐํฉ.๋๋ฅผ ์ํด ์ถฉ๋ถํ ์ข์ ๊ฒ ๊ฐ์ต๋๋ค. ๋๊น์ง ๋ฐ๋ณต ํ ํ์๊ฐ ์์ต๋๋ค.
์ด๊ฑฐํ๊ณ ์์ต๋๋ค.โ
์ด ์ด๋ฉ์ผ์ ์ง์ ๋ต์ฅํ๊ฑฐ๋ GitHub์์ ํ์ธํ์ธ์.
https://github.com/visionmedia/mocha/issues/902#issuecomment -53482124.
@syrnick ๋๋ ๊ทธ๋ ๊ฒ ํฐ ์์กด์ฑ์ ๊ฐ์ง PR์ ๋ฐ์๋ค์ด๊ณ ์ถ์ง ์๊ณ ๋์ seedrandom
ํฉ๋๋ค. ๊ทธ๊ฒ ์์ด๋ ์ด๋ป๊ฒ ์จ ๋ฟ๋ฆฌ๊ธฐ๋ฅผ ์ง์ํ ๊ฒ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. seedrandom
๋ฅผ ์ฌ์ฉํ๋ฉด ์๋๋ฅผ ์ง์ ํ ์ง ์ฌ๋ถ๋ฅผ ์ง์ ํ ์ ์์ผ๋ฉฐ ์ง์ ํ์ง ์์ผ๋ฉด ์๋๊ฐ ๋ฐํ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ฌ์ฉ์์๊ฒ ํ์ํ๊ณ RSpec์ ์ง์ ํ๋๋ก ํ์ฉ ํ ์ ์์ต๋๋ค.
@syrnick ์๋๋ฅผ ์์ฑ ํ ๊ฒฝ์ฐ ๊ธฐ์์๊ฒ ์ ๋ฌํ์ง ์๊ณ ๋ "ํ์ ํ ์"์์ ์๋ ์์ต๋๋ค. ๋ณด๊ณ ์ํคํ ์ฒ์ ๋ํด ์ ์์ง ๋ชปํด์ ์ด๋ป๊ฒํด์ผํ๋์ง ํ์คํ ๋งํ ์ ์์์ต๋๋ค.
+1
๋๋ ๊ตฌํ์ ๋ณด์ง ์์์ง๋ง ๋ฌด์์๋ก ์ ๋ ฌ ๋ ํ ์คํธ ์คํ์ +1์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋งค์ฐ ์ค์ํฉ๋๋ค.
@syrnick ์ด ์ผ์ ํ ์๊ฐ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค. ๊ฐ์ฌํฉ๋๋ค.
๊ทธ๋ ๊ฒํด์ ๊ธฐ์์ง๋ง ๋น์ฅ ETA๊ฐ ์์ต๋๋ค.
: +1 : ์์ง PR์ ๋์์ด ํ์ ํ์ ๊ฐ์?
์ค์ ๋ก ์๋ฌด๋ ์ด๊ฒ์ ๋ํด ์์ ์ ์์ํ์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
์ฒซ์งธ, Fisher-Yates ์ ํ์ด ์ฌ๊ธฐ์ ์ผ์ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋์งธ, --order random
, --order random-suites
, --order default
๋ฅผ ์ ํ์ ์ธ :<seed>
์ ํจ๊ป 3 ๊ฐ์ ์ธ์๋ก ์ฌ์ฉํฉ๋๋ค.
+1. ํ ์คํธ๊ฐ ๋ฌด์์๋ก ์ถ์ถ๋๋ฉด ์ค๋ ์ ์ ๋ํ ๋ฌ์ ๋ฒ๊ทธ๋ฅผ ๋ฐฉ๊ธ ๋ฐ๊ฒฌํ์ต๋๋ค. RSpec์ด ์ง์ํ๋ ๋ฐฉ์๊ณผ ์ ์ฌํฉ๋๋ค.
๋ค์์ ๋ฌด์์ ํ ์คํธ ์์์ ์ ์ฉ์ฑ์ ๋ณด์ฌ์ฃผ๋ ์ฝ๋์ ๋๋ค. ๋ ๊ฐ๋จํ ์์ ๊ฐ ์์ง๋ง ์ด๊ฒ์ TDD ๋ฐ๋ชจ์์ ๋ฐฉ๊ธ ๋ง๋ ๊ฒ์ ๋๋ค. ํ ์คํธ ์์๋ฅผ ๋ฐ๋๋กํ๋ฉด ์ฒซ ๋ฒ์งธ ํ ์คํธ๋ ํญ์ ์คํจํฉ๋๋ค.
game.js :
var express = require('express');
app = exports.app = express();
var sum = 0;
app.post('/bowl/:pins', function(req,res) {
var score = parseInt(req.params.pins);
console.log('Bowled ' + score);
sum += parseInt(req.params.pins);
});
app.get('/score', function(req,res) {
console.log('Sum: ' + sum);
res.send(sum + '');
});
app.listen(process.env.PORT || 3000);
test \ gameTest.js :
var request = require('supertest'),
should = require('should'),
game = require('../game.js').app;
describe('a game of bowling', function() {
describe('a gutter game', function() {
it('should score 0', function(done){
request(game).get('/score').expect(200, '0', done);
});
});
describe('a single pin game', function() {
it('should score 20', function(done){
for(var i = 0; i < 20; i++) {
request(game).post('/bowl/1').expect(200, done);
}
request(game).get('/score').expect(200, '20', done);
});
});
});
๋๋ ์ด๊ฒ์ ๊ฐ๊ณ ์ถ๋ค.
: +1 :
๋ช ๊ฐ์ง ์ ์ญ์ ํฌํจํ๊ณ (Javascript์
๋๋ค. ๊ธฐ์ตํ์ธ์) ์๋ฒ ํธ์ถ์ ์คํฐ ๋นํ๊ณ ํ
์คํธ์์ DOM์์ ํญ๋ชฉ์ ์ฝ์
/ ์ ๊ฑฐํ๋ฉด ์ฃผ๋ฌธ ์ข
์์ฑ์ ์ฝ๊ฒ ์ถ๊ฐ ํ ์ ์์ต๋๋ค. ํ
์คํธ ์์๋ฅผ ๋ฌด์์๋ก ์ง์ ํ๋ฉด ๋์ค์๋ณด๋ค๋ ์ผ์ฐ ๋ฐ๊ฒฌํ๋ ๋ฐ ๋์์ด๋ฉ๋๋ค.
: +1 :
: +1 :
: +1 :
+1
๊ธฐ๋ณธ์ ์ผ๋ก ์์ ์์, ์์๋ฅผ ๋ค์ ์์ฑํ๊ธฐ์ํ ์ ํ์ ์๋๊ฐ ์์ผ๋ฉด ์ข์ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
+1ํ๋ ค๋ฉด ๋ด ํ ์คํธ๊ฐ ์์์ ์์๋ก ์คํ๋ ๋ ๊ฐ๋ ์คํจํฉ๋๋ค ...
๊ทธ๋์ ์ ๋์ค๋ฅผ ๊ตฌ์ถํ์ญ์์ค (์ํ๊น๊ฒ๋ ์์์ ์๋๋ ์ง์๋์ง ์์) :
mocha `ls -1 test/*.js | sort --random-sort `
mocha๊ฐ ํ ์คํธ๋ฅผ ์คํํ๋ ์์๋ฅผ ๊ฒ์ํ๊ณ ์ด๊ฒ์ ๋ฐ๊ฒฌํ์ต๋๋ค. ๋ฌด์์ ํ๊ฐ์๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์คํ ์์๋ ๋ฌด์์ ๋๊น? ํญ์ ํ ์คํธ๊ฐ ํ์ผ์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ๋ํ๋๋ ์์์ ๋๊น?
: +1 :
@danielabar ์ ๊ทธ๋ค์ ํ์ผ์ ๋ํ๋๋ ์์๋๋ก ๋ ๊ฒ์ ๋๋ค.
@NicolasJacob ์ , ๋ฌด์์ ์๋๋ ์ค์ ๋ก ์ด๋ ์ ๋ ๊ฐ๋ฅํฉ๋๋ค. :)
$ seq 10 | shuf --random-source=<(yes 2883)
1
7
3
4
6
2
10
5
9
8
https://github.com/bahmutov/rocha ๊ฐ์ด๋ฅผ ์ํด ์๋ํฉ๋๋ค.
@boneskull ์ด ์ค๋๋ ๋ฌธ์ ์ด์ง๋ง PR Please
๋ ์ด๋ธ์ด ์ฌ์ ํ ์ ํจํฉ๋๊น? ๊ทธ๋ ๋ค๋ฉด ๋ค์ ๋ ์ ๋์ ๊ธฐ๋ถ๊ธ์๋ฐ์ ๊ฒ์
๋๋ค.
๊ฒฐ๊ตญ ๋ชจ์นด ์ฝ์ด๋ฅผ ์ต์ํ์ผ๋ก ์ ์งํ๋ ค๋ ๋ ธ๋ ฅ์์ ํ์ ๋ง์ ์๋ก์ด ๊ธฐ๋ฅ์ ๋์ ํ๋ ๊ฒ์ ์ฃผ์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. mocha์ ๋ค์ ์ฃผ์ ๋ฆด๋ฆฌ์ค๋ ํ๋ฌ๊ทธ ํ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ๋ ๊ฒ์ ๋ชฉํ๋กํฉ๋๋ค.
์๋ํ๋ค๋ฉด https://github.com/bahmutov/rocha๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๊ต์ฅํ ์์ค
ํ๋ฌ๊ทธ ํ ์ธํฐํ์ด์ค ๋ ๋ฌด์์ ์๋ฏธํฉ๋๊น? ์ด ์ธํฐํ์ด์ค๋ฅผ ํตํด ๋ฌด์์ ํ ์คํธ ์์๋ฅผ ๋์ ํ ์ ์์ต๋๊น?
๊ธฐ๋ฅ ์์ฒญ์ ๋ํ +1
@sulabhjain , ์ด์ ๋ฐ ๋ค์ ์ง์ง์๋ค์ ๋์ +1 ๋ฐ์์ ์ฌ์ฉํ์ธ์.
์ด ๋ถ๊ธฐ์ ์งํ.
์ด ๊ธฐ๋ฅ์ ๋ํ +1
์ด๊ฒ์ ํ ์คํธ ํ๋ ์ ์ํฌ์์ ํ ์คํธ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ ์งํ๋ ๋ฐ ๋์์ด๋๋ ๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋์ ๋๋ค. ๋ชจ๋ ์ฃผ์ JVM ํ ์คํธ ํ๋ ์ ์ํฌ์๋์ด ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ์์ต๋๋ค.
์ด ๊ธฐ๋ฅ์ ๋ํ +1์ ๋๋ค. ์, ์ถฉ๋ถํ ๊ฒฝํ ๋ฐ / ๋๋ ๋จ๋ ์ผ๋ก ์์ ํ๋ ํ ์คํธ ์ข ์์ฑ์ ํผํ๋ ๊ฒ์ ์ฝ์ง๋ง ํญ์ ๊ทธ๋ฐ ๊ฒ์ ์๋๋๋ค.
์ด ๊ธฐ๋ฅ์ ๊ด์ฌ์ด์๋ ์ฌ๋๋ค์ ์ํด ๋ฌด์์ ๋ถ๊ธฐ ์ ๋ํด PR์ ๋ณด๋ด ๋จ์ ๊ฒ์ ์๋ฃ ํ ์ ์์ต๋๋ค.
๊ธฐ๋ฅ์ +1. ์ด๋ฅผ ์ํด ๋ถ๊ธฐ๊ฐ ์งํ ์ค์ด๋ผ๋ ์ ์ ์ง์ฌ์ผ๋ก ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
์์ง๋ ์ด๊ฒ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค :))
์ด๊ฒ์ ์ ๋ง ์ ์ฉ ํ ์ ์์ต๋๋ค.
@tj ํ
์คํธ์ ๋ํ ๊ธฐ๋ณธ ๊ธฐ์ ์ ๊ฐ์ง ์ฌ๋๋ค๊ณผ ํจ๊ป ์์
ํ ๋ ํ
์คํธ ์ข
์์ฑ์ ํผํ๋ ๊ฒ์ด ์ฝ๋ค๋ ๊ฒ์ ์ดํดํฉ๋๋ค.ํ์ง๋ง ๋๋ก๋ ๊ฐ๋ฐ ํ์ ์ธ์ํด์ผํ๊ณ ํ
์คํธ ์ฌ๋ก์ ๋ํ ๊ธฐ๋ณธ ์ง์์กฐ์ฐจ์๋ ์ฌ๋๋ค๊ณผ ์ถฉ๋ ํ ์ ์์ต๋๋ค.
์ค์ ๋ก ์ด๊ฒ์ ๊ธฐ์กด ํ๋ก์ ํธ๋ฅผ ์ธ์ํ๊ณ ํ๋์ ํ ์คํธ๊ฐ ์ด์ ํ๋ก์ ํธ์ ์ฐ๊ฒฐ๋์ด ์๋์ง ์ฝ๊ฒ ํ์ธํ๋ ค๋ ๊ฒฝ์ฐ์๋ ์ ์ฉํฉ๋๋ค.
@boneskull ํ๋ฅญํฉ๋๋ค! ์ด ์์ ์ ์ํ๋ ๋ฌด์์ ๋๊น? ๋์์ด ํ์ํ์ญ๋๊น?
๋ชจ์นด ํ ์คํธ๋ฅผ ๋ฌด์์๋ก ์คํํ๋ ๋ฐ ์ฌ์ฉํ๋ ์์ ์๋ฃจ์ ์ ๊ณต์ ํ๊ณ ์ถ์์ต๋๋ค. ๋๊ตฐ๊ฐ์๊ฒ ์ ์ฉ ํ ์๋ ์์ต๋๋ค.
mocha $(find tests/ -name *.spec.js | shuf)
๋ถํํ๋ ๋์ผํ ์์ ๋ด์์ ํ ์คํธ ์์ ๋ฅผ ์์ง ์์ง๋ง ์ฌ์ ํ ๊ฝค ์๋ฆฌํ๊ณ ํธ๋ฆฌํฉ๋๋ค!
์ด ๊ธฐ๋ฅ์ ์ง์ํ๋ +1
์ด๊ฑด ์์ง ํ์ ์์ ์์ง๋ง ๋ด๊ฐ ์๋ ์ฌ๋์์ฃผ์๊ฐ ํ์ํ๋ค
๊ทธ๋์ ์ค์ ๋ก ์ฌ๊ธฐ์ ๋ฌด์์ด ๋จ์ ์์ต๋๊น? ์ด๋์๋ถํฐ ์์ํ ์ ์์ต๋๊น?
๊ตฌํ ๋ โค๏ธ๋ณด๊ณ ์ถ์ด์
๋ฐฉ๊ธ choma
ํจํค์ง๋ฅผ ์ฐพ์์ต๋๋ค.์ด ํจํค์ง๋ Mocha๊ฐ ํ
์คํธ ์ค์ํธ์ ์ผ์ด์ค์ ์์๋ฅผ ๋ฌด์์๋ก ์ง์ ํ ์์๋ ๋งค์ฐ ๊ฐ๋จํ ํ๋ฌ๊ทธ์ธ์ ์ ๊ณตํฉ๋๋ค. ์์ ์ธ๊ธ ํ rocha์ ์ข์ ๋์. ๊ฐ๋จํ๊ณ ๋๋ฅผ ์ํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค!
๋์์ ํ ์คํธ๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ๋ ๊ฒ์ ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
to avoid cross-test dependencies without help of tooling
๋ ์ฝ์ง๋ง, ์์ ์ฐจ๋ฆฌ์ง ์๊ณ ํ ์คํธ ์ค์ํธ์ ์ด๋ฌํ ์ข ์์ฑ์ ์ถ๊ฐํ๋ ๊ฒ๋ ์ฝ์ต๋๋ค. ํ ์คํธ ์ค์ํธ์ ๋ฒ๊ทธ๋ ์ผ๋ฐ์ ์ผ๋ก ํ ์คํธ ๋ ์์คํ ์ ๋ฒ๊ทธ๋ก ๋ณํ๋ฉ๋๋ค. ์ด๋ฌํ ๋ฒ๊ทธ๋ ์ฝ๋๊ฐ ํ ์คํธ ๋์์ด๊ธฐ ๋๋ฌธ์ ์ถ์ ํ๊ธฐ ์ด๋ ต์ต๋๋ค.๋๊ตฌ์์ด ๊ต์ฐจ ํ ์คํธ ์ข ์์ฑ์ด ์๋์ง ํ ์คํธํ๋ ๊ฒ์ ๋ถ๊ฐ๋ฅํฉ๋๋ค.
@visionmedia , ์ฌ๊ณ ํด์ฃผ์ธ์.