我发现使用 jQuery 或原生元素触发函数来模拟实际用户事件变得越来越困难。例如,如果你有一个文本输入并且你不希望用户能够添加一个字符,你可以在事件上调用e.preventDefault()
jQuery 规范化的事件对象keydown
。但是,无法以编程方式验证此测试场景。
即使没有调用,以下测试也会通过,preventDefault
因为 jQuery keydown 触发器不是“真实”事件。
input.val('test').trigger(jQuery.Event({
which: 68
});
expect(input).toHaveValue('test');
如果没有正确的代码,这个测试应该会失败,因为输入的值应该是“testd”(68 是“d”的字符代码)。
有谁知道任何方法或库来模拟真实的浏览器 UI 事件?