๊ฐ์ ํ์ผ์์ ๋ค๋ฅธ ํจ์๋ฅผ ์คํ ํ๋ฉด์ ํ์ผ์ ํจ์๋ฅผ ๋จ์ ํ ์คํธํ๋ ค๊ณ ํ๋๋ฐ ๋ชจ์๊ฐ ์ ์ฉ๋์ง ์๊ณ ์ค์ ๋ฉ์๋๊ฐ ํธ์ถ๋๊ณ ์์ต๋๋ค. ๋ค์์ ์์ ๋๋ค.
// 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()
์ด๊ฒ์ด ํ์ค ES5์์ ์ด๋ป๊ฒ ๋ณด์ผ์ง ์๊ฐํด ๋ณด์ญ์์ค. ๊ฐ ํจ์๋ ๋ด๋ณด๋ด๊ธฐ ๊ฐ์ฒด์์ ํน์ ์ด๋ฆ์ผ๋ก ๋ด๋ณด๋ด์ง์ง๋ง ํจ์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋ด๋ถ์ ์ผ๋ก ์ฐธ์กฐํ ์๋ ์์ต๋๋ค. ์ฐ๋ฆฌ๋ ๋ ๊ฐ์ง ๋ค๋ฅธ ์ฐธ์กฐ์ ๋ํด ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค. ์คํ ํ ๋ ์ธ๋ถ ์ฐธ์กฐ๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. ๋ด๋ถ ์ฐธ์กฐ๋ ๋์ผํ๊ฒ ์ ์ง๋ฉ๋๋ค. ๋ช ์์ ์ข ์์ฑ ์ฃผ์ ๊ธฐ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค(์: ๋ด๋ถ ์ฌ์ฉ์ ์ํ setter ํจ์). ์ด๊ฒ์ ๋ฒ๊ทธ๊ฐ ์๋๋ผ JavaScript์ ๊ธฐ๋ฅ์ ๋๋ค.
์ด์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ต๋๊น??? nodejs ํ์ผ์ ํ ์คํธํ ๋ ์ด๋ฐ ์ข ๋ฅ์ ๋ฌธ์ ์ ๋น ์ง๋ ๊ฒ์ ๋งค์ฐ ์ผ๋ฐ์ ์ ๋๋ค.
์ด๋ ์ค๋ช
์์ ๋ฐฉ๋ฒ ์น์
์์ ๋ค๋ฃน๋๋ค.
http://sinonjs.org/how-to/link-seams-commonjs/