Anwendungscode ruft location.href = "some-url"
an. Ich möchte einen Test schreiben, der die Navigationsumleitung überprüft hat.Abfangen der Navigationsänderung mit jest.js (oder Vorgehensweise zum Überschreiben und Wiederherstellen von location.href)
Mit Jest auf Jsdom, versuchte ich es mit override location.href Setter mit Jest Mock-Funktion und es funktioniert.
Aber jetzt kann ich nicht die location.href -Eigenschaft bei der Test-Bereinigung wiederherstellen, und es fehlgeschlagen den Rest der Tests, die auf "location.href" weiterleiten.
it('test navigation happened',() => {
const originalLocationHref = Object.getOwnPropertyDescriptor(window.location, 'href'); // returns undefined
spyFn = jest.fn();
Object.defineProperty(window.location, 'href', {
set: spyFn,
enumerable: true,
configurable: true
});
someAppCodeThatShouldRedirectToSomeUrl();
expect(spyFn).toBeCalledWith('http://some-url'); // this is working
// Cleanup code, not working, because originalLocationHref is undefined
Object.defineProperty(window.location, 'href', originalLocationHref);
});
Was fehlt mir? Warum Object.getOwnPropertyDescriptor(window.location, 'href');
ist undefined
?
Gibt es eine bessere Möglichkeit, Navigationsereignisse abzufangen, um sie zu testen?
Dank