В мире Javascript имитация глобальных объектов браузера может быть немного болезненной для тестов. Поиск в StackOverflow дает множество сложных ответов. Некоторые предлагают использовать сторонние макетные библиотеки. Некоторые из них перезаписывают сам глобальный объект…. Но Jest уже имеет эту встроенную возможность, и это не так уж плохо.

Допустим, у вас есть метод, который получает часовой пояс пользователя или смещение часового пояса. (иногда используется смещение часового пояса, так как IE11 не поддерживает простое чтение часового пояса, но я отвлекся)

Теперь, чтобы проверить это, нам нужно смоделировать глобальные переменные Intl и Date Javascript. Мы можем сделать это, используя метод Jest spyOn, чтобы временно заменить глобальный метод нашей собственной реализацией.

Обратите внимание, что мы устанавливаем шпиона в beforeEach и сбрасываем все в afterEach. Настройка работает примерно так:

Но это все! Нет необходимости импортировать дополнительную библиотеку. Все это поставляется непосредственно в самой Jest!

(синдикат из исходного поста в моем личном блоге здесь: https://www.sheetsj.com/2021/05/mock-intl-and-date-globals-in-jest.html)