Jest์์ ์ ์ ํด๋์ค ๋ฉ์๋๋ฅผ ์กฐ๋กฑํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ์ด ๋์์ด ์ง์๋ฉ๋๊น?
http://stackoverflow.com/questions/38206478/mocking-methods-in-jest์ ๊ต์ฐจ ๊ฒ์๋จ
๋ค์๊ณผ ๊ฐ์ ๋งค์ฐ ๊ฐ๋จํ ๋จ์ ํ ์คํธ๊ฐ ์์ต๋๋ค.
import ApiWrapper from '../../services/api_wrapper';
jest.unmock('../helper')
describe('Helper', () => {
let Helper;
beforeEach(() => {
Helper = require('../helper').default;
});
it('calls the Api Wrapper', () => {
Helper.help()
expect(ApiWrapper.help).toHaveBeenCalled();
});
});
๋์ฐ๋ฏธ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
import ApiWrapper from '../services/api_wrapper'
class Helper {
help() {
ApiWrapper.help()
}
}
export default new Helper();
ApiWrapper๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
class ApiWrapper {
static help () {
console.log('help!')
}
}
export default ApiWrapper;
ApiWrapper.help()๋ Jest๊ฐ ์กฐ๋กฑํ๋ฏ๋ก '๋์์ฃผ์ธ์!' ๊ฒฐ์ฝ ์ธ์๋์ง ์์ง๋ง ํ ์คํธ์ ๊ธฐ๋๋ ์คํจํฉ๋๋ค. ApiWrapper๋ฅผ ๋ค์๊ณผ ๊ฐ์ ์ผ๋ฐ Javascript ๊ฐ์ฒด๋ก ๋ค์ ์์ฑํ๋ฉด ์ฌ์ ํ ์คํจํฉ๋๋ค.
export default {
help: () => { console.log('help!'); }
}
๊ทธ๋ฌ๋ ์ฌ์์์ ๊ฐ์ ธ์ค๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๊ณ (๋ฐ๋ผ์ ApiWrapper๋ beforeEach์์ ๊ฐ์ ธ์ด) ApiWrapper๋ฅผ ๋ค์๊ณผ ๊ฐ์ด Singleton ํด๋์ค๋ก ๋ค์ ์์ฑํ๋ฉด ์๋ํฉ๋๋ค.
class ApiWrapper {
help() {
console.log('help!');
}
}();
export default new ApiWrapper();
Jest์ ์กฐ๋กฑ ํ๋์ ๋ํด ์ด๋ฐ ์ผ์ด ๋ฐ์ํ๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?
์ฌ๋ฐ๋ฅธ ์ฃผ์ฅ์ toBeCalled
์ด์ด์ผ ํฉ๋๋ค. ์๋ํด ๋ณผ ์ ์์ต๋๊น?
์ฃ์กํฉ๋๋ค. Stackoverflow์ ์์ ๋ฅผ ์ง์ ์ ๋ ฅํ์ต๋๋ค.
Jest๋ it
ํธ์ถํ ๋๋ง๋ค ๋ชจ๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ค์ ํฉ๋๋ค. ์๋จ์ ApiWrapper
ํ์ํ๊ณ beforeEach ๋ด๋ถ์ Helper
๊ฐ ํ์ํ๋ฏ๋ก Helper๋ ApiWrapper
์ ๋ค๋ฅธ ์ฌ๋ณธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.
beforeEach
๋ ํด๋์ค ๋ชจ๋ ํ์๊ฐ๋จํ ์ค๋ช :
var A = require('A');
jest.resetModuleRegistry();
A !== require('A'); // true, A is not the exact same module as before we reset the registry.
๊ทธ๋๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
Jest๋
it
ํธ์ถํ ๋๋ง๋ค ๋ชจ๋ ๋ ์ง์คํธ๋ฆฌ๋ฅผ ์ฌ์ค์ ํฉ๋๋ค. ์๋จ์ApiWrapper
ํ์ํ๊ณ beforeEach ๋ด๋ถ์Helper
๊ฐ ํ์ํ๋ฏ๋ก Helper๋ApiWrapper
์ ๋ค๋ฅธ ์ฌ๋ณธ์ ๋ฐ์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ๋ค์์ ์ํํ ์ ์์ต๋๋ค.beforeEach
๋ ํด๋์ค ๋ชจ๋ ํ์๊ฐ๋จํ ์ค๋ช :
๊ทธ๋๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ผ๋ฉด ์๋ ค์ฃผ์ญ์์ค.