Mise à jour de la bibliothèque Jest sur la version 25 et tous les tests unitaires qui vérifiaient le changement d'emplacement échouent.
J'ai vérifié quelques questions ouvertes sur la plaisanterie. repo mais je n'ai pas vraiment compris comment cela peut être réparé.
Le code qui appelle location.assign
se brise avec l'erreur suivante :
Error: Not implemented: navigation (except hash changes)
69 | // window.location.href = url;
> 70 | window.location.assign(url);
Je suppose que l'objet fenêtre de Jest jsdom ne devrait plus être traité comme une vraie fenêtre de navigateur en ce qui concerne le changement d'emplacement.
Une suggestion ?
Je vais ajouter mes conclusions ici :
- La navigation dans les tests ne fonctionne pas. Toutes ces méthodes qui fonctionnent dans le navigateur ne sont pas implémentées dans la fenêtre JSDom :
window.location.href = "https://myapp.com"
window.location.assign("https://myapp.com")
window.location.replace("https://myapp.com")
-
Object.defineProperty(window.location, "href", { writable: true, value: currentUrl }); window.location has been set as
Incroyable
Pour corriger les tests défaillants, j'ai utilisé :
window.history.pushState({}, "title", "/testJest");
-
delete window.location; window.location = { assign: jest.fn() };
it("should navigate to the new URL", () => { const myUrl = "http://some.url"; expect(window.location.assign).toHaveBeenCalledWith(myUrl); });