Sinon: ๊ธฐ๋ณธ์ ์œผ๋กœ stubbing setImmediate๋Š” ๋ฐ”๋žŒ์งํ•˜์ง€ ์•Š์€ ๋™์ž‘์œผ๋กœ ์ด์–ด์ง‘๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2016๋…„ 01์›” 07์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: sinonjs/sinon

์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ์Šคํ…ํ•˜๋ฉด csv ์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ด์œ ๋ฅผ ์•Œ์•„๋‚ด๋ ค๊ณ  ํ•˜๋Š” ๋™์•ˆ ์ด๊ฒƒ์„ ์•Œ์•„์ฐจ๋ ธ์Šต๋‹ˆ๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์ฐจ๋‹จ ์ค‘์ธ setImmediate ํ˜ธ์ถœ์ด ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. https://github.com/C2FO/fast-csv/blob/master/lib/extended.js#L18

๋ฌดํ•ดํ•œ ๊ฒƒ์„ ์œ„ํ•ด setImmediate ์— ์˜์กดํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋งŽ์ด ์žˆ๋Š” ๊ฒƒ ๊ฐ™์œผ๋ฉฐ setImmediate ๋ฅผ ์œ„์กฐํ•˜๋ฉด ๋ชจ๋“  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ์˜ˆ๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ์‹œ๊ฐ„์„ ์Šคํ„ฐ๋น™ํ•ด๋„ csv ์“ฐ๊ธฐ๊ฐ€ ์‹คํŒจํ•˜์ง€ ์•Š์„ ๊ฒƒ์ด๋ผ๊ณ  ๊ธฐ๋Œ€ํ•˜๋Š” ๊ฒƒ์ด ๋น„ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๊นŒ? ์ด ๊ฒฝ์šฐ ์ถ”์ ํ•˜๊ธฐ๊ฐ€ ํŠนํžˆ ์–ด๋ ต์Šต๋‹ˆ๋‹ค. Javascript์—์„œ๋Š” ctrl+c ๋ฅผ ๋ˆ„๋ฅด๊ณ  ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€ ๋ณด์—ฌ์ฃผ๋Š” ์Šคํƒ ์ถ”์ ์„ ์–ป์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ์˜ ์–ด๋–ค ๋ถ€๋ถ„์ด ๋ฉˆ์ถ”๋Š”์ง€ ์‹๋ณ„ํ•˜๊ณ  ์™œ sinon์ด ์ฑ…์ž„์ด ์žˆ๋Š”์ง€ ์ดํ•ดํ•˜๋Š” ๋ฐ ์•ฝ 90๋ถ„์ด ๊ฑธ๋ ธ์Šต๋‹ˆ๋‹ค.

์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๊ทธ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๋Š” ๋งน๊ธ€๋งํ•  ์ˆ˜ ์—†๋Š” ์ž์ฒด ๋ฒ„์ „์˜ setImmediate ๋ฅผ ๋งŒ๋“ค์–ด ์‘๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค.

๋Œ€๋‹ต์ด useFakeTimers(0, "Date") ๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ๊ฐ’์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๊นŒ? ์–ด์ฉŒ๋ฉด ๊ทธ๊ฒƒ์€ ์„ธ์ƒ์ด ์–ด๋–ป๊ฒŒ ํ–‰๋™ํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚˜์˜/์‚ฌ๋žŒ๋“ค์˜ ๊ธฐ๋Œ€์— ๋” ์ž˜ ๋งž์Šต๋‹ˆ๊นŒ?

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‚˜์ค‘์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์ œ ์ด ํ˜•์‹์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์กฐ๋œ ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var clock = sinon.useFakeTimers([now, ]prop1, prop2, ...);

Sets the clock start timestamp and names functions to fake.

Possible functions are setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate and Date. Can also be called without the timestamp.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ์ต์Šคํ”„๋ ˆ์Šค๋กœ ์ž‘์—…ํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

clock = sinon.useFakeTimers(1495020000, 'Date');

๋ชจ๋“  4 ๋Œ“๊ธ€

์ˆ˜์ • ์‚ฌํ•ญ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๊ทธ ์ค‘ ์ ์–ด๋„ ํ•˜๋‚˜๋Š” ๋งน๊ธ€๋งํ•  ์ˆ˜ ์—†๋Š” ์ž์ฒด ๋ฒ„์ „์˜ setImmediate๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์‘๋‹ตํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” setTimeout์„ ์‚ฌ์šฉํ•  ๋•Œ ๊ถŒ์žฅ๋˜๋Š” ์†”๋ฃจ์…˜์ด๋ฉฐ, ์ƒˆ๋กœ์šด ํ˜ธ์ถœ ์Šคํƒ์„ ๊ฐ€์ ธ์˜ค๋Š” ํšจ๊ณผ๋ฅผ ์œ„ํ•ด setImmediate๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์‹œ๊ฐ„ ์ œ์–ด๊ฐ€ ์•„๋‹˜).

https://github.com/taylorhakes/promise-polyfill/pull/15

๋„ค, ์ƒ์šฉ ์ฝ”๋“œ๋ฒ ์ด์Šค์—์„œ ์ด๊ฒƒ์„ ์ง„๋‹จํ•˜๊ณ  ์ˆ˜์ •ํ•˜๋Š” ๋ฐ 90๋ถ„์„ ๋ณด๋ƒˆ์Šต๋‹ˆ๋‹ค.

์ตœ์†Œํ•œ ๋ฌธ์„œ ์—์„œ๋Š” setImmediate๊ฐ€ ์œ„์กฐ๋  ๊ฒƒ์ด๋ผ๊ณ  ์–ธ๊ธ‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์ œ ์ด ํ˜•์‹์˜ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ„์กฐ๋œ ํ•จ์ˆ˜๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var clock = sinon.useFakeTimers([now, ]prop1, prop2, ...);

Sets the clock start timestamp and names functions to fake.

Possible functions are setTimeout, clearTimeout, setInterval, clearInterval, setImmediate, clearImmediate and Date. Can also be called without the timestamp.

๊ทธ๋ž˜์„œ ์ด๊ฒƒ์€ ์ต์Šคํ”„๋ ˆ์Šค๋กœ ์ž‘์—…ํ•  ๋•Œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

clock = sinon.useFakeTimers(1495020000, 'Date');

๋ฌธ์„œ๋Š” ์ด๊ฒƒ์„ ์ง€๊ธˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค: http://sinonjs.org/releases/v2.3.2/fake-timers/#var -clock--sinonusefaketimersnow-prop1-prop2-

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰