2016-07-31 17 views
1

Ich verwende jsdom mit enzym + mocha + chai, um das Verhalten einer React-Komponente zu testen. Die Komponente hat eine Methode, um einen DOM-Knoten zu fokussieren (unter Verwendung des üblichen node.focus()) und ich möchte testen, ob der Knoten tatsächlich fokussiert ist, wenn er aufgerufen wird.jsdom 9.1+ setzt document.activeElement beim Fokussieren eines Knotens nicht

Um zu wissen, welcher Knoten fokussiert ist, vergleiche ich document.activeElement mit dem Knoten, von dem ich erwarte, dass er fokussiert wird.

Nach dem Upgrade auf jsdom 9.1+ scheint document.activeElement immer HTMLBodyElement zu sein, auch nach dem Aufruf der Methode des Knotens.

Mit jsdom 9.0 laufen die Tests gut.

Ich las jsdom 9.1+ contains some changes im Zusammenhang mit dem Fokus-Ereignis, aber ich konnte nicht verstehen, wie document.activeElement Verhalten wie erwartet verhalten. Irgendeine Hilfe?

Antwort

2

Könnte es sein, dass Sie ein tabindex Attribut für das Element vermissen, das Sie fokussieren möchten? Es muss auf eine gültige ganze Zahl für jsdom festgelegt werden, um es als fokussierbar zu interpretieren.

Sie können dies in der jsdom source code sehen.

+0

Ja das war! Vielen Dank! – gpbl

Verwandte Themen