Jsdom: DOM ์„ ํƒ API ๊ตฌํ˜„

์— ๋งŒ๋“  2014๋…„ 11์›” 05์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: jsdom/jsdom

https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection

์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ์‹ฌ์กฐ์ฐจ๋„ ๋จผ ๊ธธ์„ ๊ฐˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ˜„์žฌ ๋‚˜๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

window.document.getSelection = function() { return { addRange: function() {}, AllRanges:function () { } } } ์ œ๊ฑฐ;

getSelection()์„ ์‹คํ–‰ํ•  ๋•Œ "undefined๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์—†์Œ"์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด์„œ์ž…๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

@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 ์„ ํ†ตํ•ด ์œ„์˜ ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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

์šฐ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” 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 ์„ ํ†ตํ•ด ์œ„์˜ ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

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