我使用 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/