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

gpb*_*pbl 5 unit-testing mocha.js jsdom reactjs enzyme

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

要知道哪个节点是重点,我将document.activeElement与我期望重点的节点进行比较。

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

使用 jsdom 9.0 测试运行良好。

我读到 jsdom 9.1+包含一些与焦点事件相关的更改,但我无法理解 make 的document.activeElement行为如何按预期进行。有什么帮助吗?

Jos*_*ner 5

可能是您缺少tabindex要关注的元素的属性吗?它必须设置为一个有效的整数,jsdom 才能将其解释为可聚焦。

您可以在jsdom 源代码中看到这一点。