์์คํ
์๊ฐ์ ์คํ
ํ๋ฉด 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")
๋ฅผ ํธ์ถํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ธฐ๋ณธ๊ฐ์ด ๋์ด์ผ ํฉ๋๊น? ์ด์ฉ๋ฉด ๊ทธ๊ฒ์ ์ธ์์ด ์ด๋ป๊ฒ ํ๋ํ๋์ง์ ๋ํ ๋์/์ฌ๋๋ค์ ๊ธฐ๋์ ๋ ์ ๋ง์ต๋๊น?
์์ ์ฌํญ์ด ๋ฌด์์ธ์ง ํ์คํ์ง ์์ง๋ง ๋ง์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ ๊ทธ ์ค ์ ์ด๋ ํ๋๋ ๋งน๊ธ๋งํ ์ ์๋ ์์ฒด ๋ฒ์ ์ setImmediate๋ฅผ ์์ฑํ์ฌ ์๋ตํ์ต๋๋ค.
์ด๋ setTimeout์ ์ฌ์ฉํ ๋ ๊ถ์ฅ๋๋ ์๋ฃจ์ ์ด๋ฉฐ, ์๋ก์ด ํธ์ถ ์คํ์ ๊ฐ์ ธ์ค๋ ํจ๊ณผ๋ฅผ ์ํด setImmediate๋ฅผ ์ฌ์ฉํฉ๋๋ค(์๊ฐ ์ ์ด๊ฐ ์๋).
๋ค, ์์ฉ ์ฝ๋๋ฒ ์ด์ค์์ ์ด๊ฒ์ ์ง๋จํ๊ณ ์์ ํ๋ ๋ฐ 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-
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋์ค์ ์ฐธ์กฐํ ์ ์๋๋ก ์ด์ ์ด ํ์์ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์์กฐ๋ ํจ์๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ด๊ฒ์ ์ต์คํ๋ ์ค๋ก ์์ ํ ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค.