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

10-06 12:05