我发现使用 jQuery 或 native 元素触发函数模拟实际用户事件越来越困难。例如,如果您有文本输入并且不希望用户能够添加字符,则可以使用 e.preventDefault()
上的 jQuery 规范化事件对象调用 keydown
事件。但是,无法以编程方式验证此测试场景。
即使没有调用 preventDefault
,以下测试也会通过,因为 jQuery keydown 触发器不是“真实”事件。
input.val('test').trigger(jQuery.Event({
which: 68
});
expect(input).toHaveValue('test');
如果没有正确的代码,这个测试应该会失败,因为输入的值应该是“testd”(68 是“d”的字符代码)。
有人知道模拟真实浏览器 UI 事件的方法或库吗?
最佳答案
模拟真实事件相当复杂。您必须首先确定您需要哪种类型的事件并使用 document.createEvent
创建它.然后调用不同的init*Event
来初始化事件对象。最后,使用 element.dispatchEvent
将事件分派(dispatch)给目标对象。
关于javascript - 为 TDD JavaScript 模拟用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770662/