2017-12-20 19 views
2

Beim Testen mit Jest sah ich, dass die Eigenschaft innerText nicht definiert ist, während nicht im Test hat es den richtigen Wert.InnerText ist undefined in Jest Test

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() 
    }) 

Aber wenn derselbe Code nicht im Scherz-Test, der zeigt Innertext:

'a 

b 

c' 

und ist 'abc' textcontent.

Warum innerText im Scherz ist nicht definiert und wenn es nicht in einem Scherz ist als der Wert ist real?

Dies ist der Code, wo es (nicht im Scherz) arbeitet:

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

Antwort

1

Wenn Sie den Standard testEnvironment verwenden, dann jsdom Sie verwenden.

Sie können dieses Problem überprüfen, um zu sehen, warum es nicht in jsdom implementiert: https://github.com/tmpvar/jsdom/issues/1245

Das primäre Problem ist die Tatsache, dass Innertext für Leitlinien für die Layout-Engine lehnt, und jsdom hat keine Layout-Engine

Wenn Sie „voll“ Browser-Unterstützung möchten, können Sie puppeteer

+0

argG prüfe ich Ostereier hassen! Vielen Dank ! –