Sinon: ์Šคํ… ์ „์—ญ ๋ณ€์ˆ˜

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

ํ…Œ์ŠคํŠธ ๋ฐ/๋˜๋Š” ๋ชจ์˜ํ•˜๋ ค๋Š” ๋ชจ๋“ˆ์€ ์ผ๋ถ€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ๋ชจ๋“ˆ์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” ๋ณ€์ˆ˜ session ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๋ณ€์ˆ˜๋Š” ์–ด๋””์—๋„ ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ๋Ÿฐํƒ€์ž„์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

globals.js ๋ชจ๋“ˆ์„ ๊ณ ๋ คํ•˜์‹ญ์‹œ์˜ค.

let globals = {
    contextName: "DATA_PIPELINE",
    reportContext: "report",
    session: session
};

module.exports = globals;

session ์€ ์ด ํŒŒ์ผ์— ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์ง€๋งŒ ๋Ÿฐํƒ€์ž„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ํ™˜๊ฒฝ์˜ ์ „์—ญ ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค(๋‚ด ํ†ต์ œํ•˜์— ์žˆ์ง€ ์•Š์Œ).

๊ฐ€์งœ ํƒ€์ด๋จธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ setTimeout๊ณผ ๊ฐ™์€ ์ „์—ญ ํ•จ์ˆ˜ ๊ตฌํ˜„์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ์ „์—ญ ํ•จ์ˆ˜/๊ฐ์ฒด์— ์–ด๋–ป๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

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

์•„๋งˆ๋„ sinon.replace(object, prop, replacement) ์ด(๊ฐ€) ์ฐพ๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๊นŒ?
https://sinonjs.org/releases/v7.2.4/sandbox/#sandboxreplaceobject -property-replacement

์šฐ๋ฆฌ๋Š” GitHub ๋ฌธ์ œ ๋ชฉ๋ก์„ ๊น”๋”ํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ  ๋ฒ„๊ทธ์™€ ๊ธฐ๋Šฅ ํ† ๋ก ์— ์ง‘์ค‘ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ํ‹ฐ์ผ“์€ ์‚ฌ์šฉ ์งˆ๋ฌธ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ StackOverflow ์— ๊ฒŒ์‹œํ•˜๊ณ  sinon ํƒœ๊ทธ๋ฅผ ์ง€์ •ํ•˜์—ฌ ๋” ํฐ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๊ท€ํ•˜์˜ ์งˆ๋ฌธ์— ๋‹ต๋ณ€ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜์‹ญ์‹œ์˜ค.

Node.js์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

global.session = sinon.stub();
// Proceed to import the modules that use the session global and run the tests
์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰