触发单元测试的事件
Triggering event for unit testing
我正在尝试使用浏览器中运行的摩卡在单元测试中触发滚动事件。我有以下代码:
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");
}
});
}
如何为依赖于它的函数触发滚动事件?我也尝试过创建一个事件对象,但这也不起作用。任何指针都会很棒。
您的代码是在窗口上还是在_element上查找滚动事件?如果它在窗口上,您应该能够调度如下所示的滚动事件:
window.dispatchEvent(new Event('scroll'));
否则,您可以执行以下操作:
element.dispatchEvent(new Event('scroll'));
这是一个jsfiddle演示。
相关文章:
- 我的单元测试选项是什么
- 如何在Angular单元测试中从另一个控制器的rootScope将方法添加到rootScope中
- 如何对CSS transitionEnd事件后执行的JavaScript进行单元测试
- 单元测试:使用酶模拟父组件中子组件的点击事件
- AngularJS:指令限制:“E”阻止在Jasmine单元测试中调用元素click()事件
- 如何在angularjs单元测试中触发mousemove事件
- 触发单元测试中的键控事件
- 是否应该对 JavaScript 事件处理程序进行单元测试
- 使用Jasmine对javascript/jQuery事件进行单元测试
- 我可以在茉莉花单元测试中伪造存储事件吗
- 使用jasmin对AngularJS$事件进行单元测试
- 如何最好地对事件抽象进行单元测试
- 在Nodejs中对事件进行单元测试的最佳方法是什么?
- 如何在Jasmine中为进入事件指令编写单元测试
- 如何在backbone.js中为事件编写单元测试
- 在IE中单元测试事件处理程序
- 为事件创建单元测试
- 如何在Angular指令的Jasmine单元测试中触发一个click事件?
- 触发单元测试的事件
- 单元测试angularjs指令监听事件