unit-testing - jsdom 9.1+ 在聚焦节点时不设置 document.activeElement

标签 unit-testing reactjs mocha.js jsdom enzyme

我使用 jsdom 和 enzyme + Mocha +柴来测试 React 组件的行为。该组件有一个方法来聚焦 DOM 节点(使用通常的 node.focus()),我想测试该节点在调用时是否实际聚焦。

为了了解哪个节点是焦点,我将 document.activeElement 与我期望焦点的节点进行比较。

但是,升级到 jsdom 9.1+ 后,document.activeElement 似乎始终是 HTMLBodyElement,即使在调用节点的 focus() 方法之后也是如此。

使用 jsdom 9.0,测试运行良好。

我读了 jsdom 9.1+ contains some changes与焦点事件相关,但我无法理解 make document.activeElement 如何按预期运行。有什么帮助吗?

最佳答案

您是否在尝试关注的元素上缺少 tabindex 属性?必须将其设置为有效整数,jsdom 才能将其解释为可聚焦。

您可以在 jsdom source code 中看到这一点.

关于unit-testing - jsdom 9.1+ 在聚焦节点时不设置 document.activeElement,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38681827/

相关文章:

r - 如何在不构建或安装包的情况下运行 R 包测试?

reactjs - TypeError : theme. 间距不是函数

reactjs - 为什么 setState(this.state) 没有触发重新渲染?

node.js - Mocha,如何忽略 node_modules 文件夹

node.js - 如何使用 process.nextTick 进行测试

unit-testing - 在运行完所有测试之后,是否可以执行拆解功能?

c# - 围绕第三方 dll 创建包装器以抽象 dll 并能够对我的代码进行单元测试

javascript - 如何让mocha使用http响应?

Angular 单元测试 : can't change the reporter of karma

javascript - useState 如何迭代数组