使用jest进行测试时,我发现属性innerText
未定义,而未在测试中它具有正确的值。
it('get text from div', () => {
const div = document.createElement('DIV')
div.innerHTML = '<br>a<br>b<br>c'
console.log('innerText', div.innerText) // undefined
console.log('textContent', div.textContent) // 'abc'
// expect(getTextFromDiv(div).length).toMatchSnapshot()
})
但是当在jest测试中使用相同的代码时,innerText会显示:
'a
b
c'
和textContent为'abc'
。
为什么在jest中的innerText是未定义的,何时它不是一个笑话而不是值是真的?
这是它工作的代码(不是开玩笑):
const addTextInRichTextToPdf = (doc, text, offsetY) => {
const div = document.createElement('DIV')
div.innerHTML = '<br>a<br>b<br>c'
console.log('innerText', div.innerText) // print the real value
console.log('textContent', div.textContent) // 'abc'
...
答案 0 :(得分:4)
如果您使用默认的testEnvironment,那么您正在使用jsdom。
您可以查看此问题,了解jsdom中未实现的原因: https://github.com/tmpvar/jsdom/issues/1245
主要问题是innerText倾向于布局引擎以获取指导,而jsdom没有布局引擎
如果您想要“完整”浏览器支持,可以查看puppeteer