Jest ошибка при установке или назначении window.location - PullRequest
2 голосов
/ 28 января 2020

Обновлена ​​библиотека Jest на v25, и все модульные тесты, которые проверяли изменение местоположения, дают сбой.

Я проверил пару проблем, открытых на jest repo , но на самом деле я не понял, как это можно исправить.

Код, вызывающий location.assign, прерывается со следующей ошибкой:

Error: Not implemented: navigation (except hash changes)

      69 |     // window.location.href = url;
    > 70 |     window.location.assign(url);

Я полагаю, что объект окна Jest JSDOM больше не должен рассматриваться как реальное окно браузера в отношении изменения местоположения.

Любое предложение?


Я добавлю мои выводы здесь:

  • Навигация в тесты не работают. Все эти методы, которые работают в браузере, не реализованы в окне JSDom:

Для исправления неудачных тестов я использовал:

  1. window.history.pushState({}, "title", "/testJest");
  2. 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); });

1 Ответ

1 голос
/ 28 января 2020

Если говорить кратко, "global" - это "окно" в Jest.

Использование:

global.location.assign(url);

Я полагаю, что вы можете найти остальную часть ответа здесь:

Как смоделировать оконный объект JavaScript с помощью Jest?

Также по этому вопросу ведется интересная беседа:

https://github.com/facebook/jest/issues/3692

Надеюсь, это решит вашу проблему.

...