javascript - 为 TDD JavaScript 模拟用户输入

标签 javascript unit-testing tdd jasmine

我发现使用 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将事件分派(dispatch)给目标对象。

关于javascript - 为 TDD JavaScript 模拟用户输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6770662/

相关文章:

c# - 单元测试私有(private) Setter 问题(C#)

testing - 将 TDD 应用于功能测试

javascript - 将 "Vanilla"Javascript 库加载到 Node.js 中

firebase - 使用 firebase-functions-test、mocha 和 Emulator Suite 对 Firebase(云)函数进行单元测试时,为什么无法访问 .env 变量?

unit-testing - 在 TDD 中使用 'real' 实用程序类而不是模拟是否可以接受?

javascript - JStestDriver 可以用来测试 JSP 文件中的 js 代码吗?

java - 如何在两个项目中的测试文件夹之间设置 Maven 依赖关系?

Javascript在可编辑的表格上移动光标在保存行上移动

javascript - 未知提供者 : uniqueFilterProvider using unique filter in Angular. js

javascript - 正确初始化 IndexedDB 对象存储