jest, jsdom и объект документа при импорте функции
У меня есть функция, которая производит побочный эффект. Я упрощаю его, регистрируя содержимое элемента Node, чтобы сосредоточиться на проблемах.
logFile.js
function log() {
console.log(document.querySelector('#mydiv').textContent)
}
export { log }
Затем у меня есть модульный тест
log.test.js
import {
log
} from '../logFile'
import { JSDOM } from 'jsdom'
describe('Test log function', () => {
it('should log what the div is holding', () => {
const dom = new JSDOM(`<!DOCTYPE html><div id="mydiv">HELLO</div>`);
const document = dom.window.document;
// This works
console.log(document.querySelector('#mydiv').textContent)
// This also works
console.log(document.querySelector('#mydiv').textContent)
// This doesn't work
log()
});
})
Это тривиальный пример, но что произойдет, если я захочу манипулировать DOM, используя .appendChild() ...?
И в консоли вижу следующую ошибку
TypeError: Cannot read property 'textContent' of null
26 |
> 27 | console.log(document.querySelector('#mydiv').textContent)
| ^
28 |
29 | }
Кто-нибудь может мне помочь? Спасибо