我发现使用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
将事件调度到目标对象。