在开玩笑测试中未定义innerText

时间:2017-12-20 09:09:16

标签: javascript reactjs jestjs

使用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'
  ...

1 个答案:

答案 0 :(得分:4)

如果您使用默认的testEnvironment,那么您正在使用jsdom。

您可以查看此问题,了解jsdom中未实现的原因: https://github.com/tmpvar/jsdom/issues/1245

  

主要问题是innerText倾向于布局引擎以获取指导,而jsdom没有布局引擎

如果您想要“完整”浏览器支持,可以查看puppeteer