В мире 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)