模拟TDD JavaScript的用户输入

Mat*_*y F 6 javascript tdd unit-testing jasmine

我发现使用jQuery或本机元素触发器函数模拟实际用户事件越来越困难.例如,如果您有文本输入并且不希望用户能够添加字符,则可以e.preventDefault()使用事件上的jQuery规范化事件对象进行调用keydown.但是,无法以编程方式验证此测试方案.

即使没有调用,以下测试也会通过,preventDefault因为jQuery keydown触发器不是"真实"事件.

input.val('test').trigger(jQuery.Event({
    which: 68
});
expect(input).toHaveValue('test');
Run Code Online (Sandbox Code Playgroud)

如果没有正确的代码,此测试应该失败,因为输入的值应为'testd'(68是'd'的字符代码).

有没有人知道任何方法或库来模拟真实的浏览器UI事件?

Gho*_*toy 4

模拟真实事件相当复杂。您必须首先确定您需要哪种类型的事件并使用 来创建它document.createEvent。然后调用 differentinit*Event来初始化事件对象。最后,使用element.dispatchEvent将事件分派到目标对象。