Ich führe einen Test mit einer Bibliothek ( grommet
) aus, die scrollIntoView
für ein a
Tag verwendet. jsdom
gibt Fehler aus, wenn diese Codezeile erreicht wird. Ich konnte es zum Laufen bringen, indem ich window.HTMLElement.prototype.scrollIntoView = function() {};
in meiner testHelper-Datei hinzufügte, um die Tests einzurichten, aber ich dachte, ich würde es melden, um zu sehen, ob es etwas ist, das Sie reparieren möchten.
Ja, das könnte es wert sein, einen nicht implementierten Warn-Stub hinzuzufügen. Wir können es nicht wirklich implementieren, da wir kein Layout machen.
Irgendeine Bewegung dazu?
Beim Versuch, in einem Jest-Test zu verwenden, versuche ich, eine Komponente zu mounten, die scrollIntoView für ein Element aufruft, und der Test schlägt immer fehl mit
TypeError: node.scrollIntoView is not a function
at Object.scrollInToView src/component/shared/foo.tsx:7
at User.Object.<anonymous>.User.componentDidMount
@QuantumInformation Sie können dies für den Scherz verwenden:
Element.prototype.scrollIntoView = jest.fn();
Ich sehe diesen Fix überall, aber importieren Sie Element von? Ich bekomme 'Element ist nicht definiert' Ich verwende Enzyme mit Chai.
Sie benötigen Element in Ihren tsconfig-Bibliotheken:
dh
'dom'
@qmg-JamesT Dies ist die globale Elementklasse, von der die anderen Elemente der scrollIntoView- Methode geerbt werden.
Hallo, gibt es dazu ein Update ohne Scherz?
Hallo, Sie können window.HTMLElement.prototype.scrollIntoView = jest.fn() verwenden.
Ich brauche das gleiche für Element.prototype.scroll = jest.fn()
@enessoylu und @msmetana wo empfehlen Sie Element.prototype.scrollIntoView = jest.fn()
in jeden .test.
Bei Verwendung von CRA gibt es eine setupTest.ts, scheint zu funktionieren, aber idk
import '@testing-library/jest-dom/extend-expect'
Element.prototype.scroll = jest.fn()
Für ava
oder jeden anderen Unit-Test-Runner können Sie window.HTMLElement.prototype.scrollIntoView = () => {}
und es in test.beforeEach()
oder innerhalb der Testfunktion einstellen
Für mich hat es gereicht, einzustellen:
Element.prototype.scrollIntoView` = () => {};
einmal in setupJest.ts
Dies scheint auch bei scroll
der Fall zu sein
Element.prototype.scrollIntoView = jest.fn();
Vielen Dank! es funktionierte.
Probier diese..
window.HTMLElement.prototype.scrollIntoView = function() {};
Hilfreichster Kommentar
@QuantumInformation Sie können dies für den Scherz verwenden:
Element.prototype.scrollIntoView = jest.fn();