https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection
์๋ํ์ง ์๋ ์ฌ์กฐ์ฐจ๋ ๋จผ ๊ธธ์ ๊ฐ ๊ฒ์ ๋๋ค. ํ์ฌ ๋๋ ๋ค์์ ์ํํฉ๋๋ค.
window.document.getSelection = function() { return { addRange: function() {}, AllRanges:function () { } } } ์ ๊ฑฐ;
getSelection()์ ์คํํ ๋ "undefined๋ฅผ ํธ์ถํ ์ ์์"์ ํผํ๊ธฐ ์ํด์์ ๋๋ค.
์ฐ๋ฆฌ๋ ์ค์ ๋ก ์๋ํ์ง ์๋ shim๊ณผ ๊ด๋ จ์ด ์์ง๋ง ์์ ์ jsdom ์ฐฝ์ ์ถ๊ฐํ ์ ์์ต๋๋ค.
Jest๊ฐ jsdom์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ฒ์ ๊ตฝ๋ ๋ฐฉ๋ฒ์ ๋ํ ์์ด๋์ด๊ฐ ์์ต๋๊น?
์์ ์ด ํ์คํ์ง ์์ต๋๋ค. @Sebmaster ๋ jest์ ๋ํด ์กฐ๊ธ ๋ ์ต์ํ์ง๋ง Jest ์ด์ ํธ๋์ปค๊ฐ ์ต์ ์ ์ ํ์ด ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค.
@domenic ๊ฐ์ฌํฉ๋๋ค. Jest ๋์ฐ๋ฏธ์ @tolmasky ์ ์ฝ๋ ๋ฒ์ ์ ์ถ๊ฐํ์ฌ ํ์ํ ์ฌ์ ์ป์์ต๋๋ค.
// spec/javascripts/helpers/jest-env.js
// window.getSelection isn't in jsdom
// https://github.com/tmpvar/jsdom/issues/937
window.getSelection = function() {
return {
addRange: function() {},
removeAllRanges:function() {}
};
};
Jest์ config.setupEnvScriptFile ์ ํตํด ์์ ํ์ผ์ ์ฐ๊ฒฐํฉ๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@domenic ๊ฐ์ฌํฉ๋๋ค. Jest ๋์ฐ๋ฏธ์ @tolmasky ์ ์ฝ๋ ๋ฒ์ ์ ์ถ๊ฐํ์ฌ ํ์ํ ์ฌ์ ์ป์์ต๋๋ค.
Jest์ config.setupEnvScriptFile ์ ํตํด ์์ ํ์ผ์ ์ฐ๊ฒฐํฉ๋๋ค.