我正在尝试使用在浏览器中运行的Mocha在我的单元测试中触发滚动事件。我有以下代码:
describe('Background Change', function() {
describe('toogleBgHandler()', function() {
it('should contain toggle-bg when scrollTop is more than 0', function() {
let html = document.createElement('html');
var target = [];
target.push(html);
let body = document.createElement('body');
let div = document.createElement('div');
html.appendChild(body);
body.appendChild(div);
document.body.dispatchEvent(new Event("scroll"));
toggleBgHandler(target, div)
chai.assert.isTrue(div.classList.contains("toggle-bg"));
});
});
});
我正试图测试的功能:
function toggleBgHandler(html, ele) {
document.addEventListener("scroll", (e) => {
if (html[0].scrollTop === 0) {
ele.classList.remove("toggle-bg");
} else {
ele.classList.add("toggle-bg");
}
});
}
如何为依赖它的函数触发滚动事件?我也尝试过创建一个事件对象,但这也没有用。任何指针都会很棒。
答案 0 :(得分:0)
您的代码在窗口或_element上寻找滚动事件?如果它在窗口上,您应该能够发送如下滚动事件:
window.dispatchEvent(new Event('scroll'));
否则,你可以这样做:
element.dispatchEvent(new Event('scroll'));