我发现使用jQuery或本地元素触发函数越来越难以模拟实际的用户事件。例如,如果您有一个文本输入框,您不希望用户能够添加字符,您可以在
以下测试即使没有调用
keydown
事件上调用具有jQuery标准化事件对象的e.preventDefault()
。然而,没有办法通过编程验证这个测试场景。以下测试即使没有调用
preventDefault
也会通过,因为jQuery keydown触发器不是一个“真正”的事件。input.val('test').trigger(jQuery.Event({
which: 68
});
expect(input).toHaveValue('test');
如果没有正确的代码,这个测试应该会失败,因为输入框应该有一个值为“testd”的值(68是“d”的字符编码)。
有人知道模拟真实浏览器UI事件的方法或库吗?
initKeyboardEvent
初始化的事件总是将keyCode
和charCode
设置为0。我猜你应该参考Firefox而不是基于WebKit的浏览器。 - Ghostoy