我想测试一个非常简单的JS函数
export function displaySpinner() {
const loadingOverlayDOM = document.createElement('DIV');
const spinner = document.createElement('IMG');
loadingOverlayDOM.id = 'overlay-spinner';
loadingOverlayDOM.className = 'content-overlay';
spinner.className = 'is-spinning';
spinner.setAttribute('src', '/assets/img/svg/icons/spinner.svg');
l loadingOverlayDOM.insertAdjacentElement('beforeend', spinner);
document.body.insertAdjacentElement('beforeend', loadingOverlayDOM);
}
用这个(为了解决这个问题的目的)Jest测试代码:
test('displaySpinner displays the spinner overlay in the current page', () => {
utils.displaySpinner();
});
但测试运行对我大喊:
FAIL app/helper/utils.test.js
● utils › displaySpinner displays the spinner overlay in the current page
TypeError: loadingOverlayDOM.insertAdjacentElement is not a function
at Object.displaySpinner (app/helper/utils.js:185:439)
at Object.<anonymous> (app/helper/utils.test.js:87:15)
at Promise.resolve.then.el (node_modules/p-map/index.js:42:16)
at process._tickCallback (internal/process/next_tick.js:109:7)
这是Jest中的错误还是我错过了什么?
答案 0 :(得分:4)
我终于找到了答案:
Jest使用 jsdom ,它还不支持DOM函数 insertAdjacentElement (参见this issue on GitHub and it's references)。因此,我必须等到jsdom实现它或在我的JS中使用另一种方法。