Sinon: ๋™์ผํ•œ ํŒŒ์ผ์˜ ์Šคํ„ฐ๋น™ ๋ฐฉ๋ฒ•์ด ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

๊ฐ™์€ ํŒŒ์ผ์—์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋ฅผ ์Šคํ…ํ•˜๋ฉด์„œ ํŒŒ์ผ์˜ ํ•จ์ˆ˜๋ฅผ ๋‹จ์œ„ ํ…Œ์ŠคํŠธํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ ๋ชจ์˜๊ฐ€ ์ ์šฉ๋˜์ง€ ์•Š๊ณ  ์‹ค์ œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์˜ˆ์ž…๋‹ˆ๋‹ค.

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}

๊ทธ๋ฆฌ๊ณ  ๋‚ด ํ…Œ์ŠคํŠธ :

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()

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

์ด๊ฒƒ์ด ํ‘œ์ค€ ES5์—์„œ ์–ด๋–ป๊ฒŒ ๋ณด์ผ์ง€ ์ƒ๊ฐํ•ด ๋ณด์‹ญ์‹œ์˜ค. ๊ฐ ํ•จ์ˆ˜๋Š” ๋‚ด๋ณด๋‚ด๊ธฐ ๊ฐœ์ฒด์—์„œ ํŠน์ • ์ด๋ฆ„์œผ๋กœ ๋‚ด๋ณด๋‚ด์ง€์ง€๋งŒ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด๋ถ€์ ์œผ๋กœ ์ฐธ์กฐํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ๋‘ ๊ฐ€์ง€ ๋‹ค๋ฅธ ์ฐธ์กฐ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์Šคํ…ํ•  ๋•Œ ์™ธ๋ถ€ ์ฐธ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๋ถ€ ์ฐธ์กฐ๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ์ข…์†์„ฑ ์ฃผ์ž…๊ธฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค(์˜ˆ: ๋‚ด๋ถ€ ์‚ฌ์šฉ์„ ์œ„ํ•œ setter ํ•จ์ˆ˜). ์ด๊ฒƒ์€ ๋ฒ„๊ทธ๊ฐ€ ์•„๋‹ˆ๋ผ JavaScript์˜ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.

์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ??? nodejs ํŒŒ์ผ์„ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ด๋Ÿฐ ์ข…๋ฅ˜์˜ ๋ฌธ์ œ์— ๋น ์ง€๋Š” ๊ฒƒ์€ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ์„ค๋ช…์„œ์˜ ๋ฐฉ๋ฒ• ์„น์…˜์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
http://sinonjs.org/how-to/link-seams-commonjs/

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