Как мне установить часовой пояс в моем конфиге Jest? - PullRequest
5 голосов
/ 22 мая 2019
✗ npx jest --version
24.5.0

Получил набор шутливых тестов, чувствительных к часовому поясу. Обычно мы запускаем их с помощью скрипта npm: "jest": "TZ=utc jest"

Если для TZ установлено значение utc, я получаю такие значения на снимках:

modificationDate="2019-01-08T00:00:00.000Z" 

Без этого я получаю:

modificationDate="2019-01-08T08:00:00.000Z"

Есть ли способ установить это в моем jest config, чтобы я мог запускать npx jest в командной строке без необходимости проходить через скрипт NPM? В config docs нет ничего об этом.

Я попытался добавить эти два в мой jest.config.js. Никто не работал:

  TZ: 'utc',

  globals: {
    TZ: 'utc',
  },

Конечно, обойти это кажется тривиальным, но я удивлен, что Джест не может настроить это для тестов.

Ответы [ 2 ]

6 голосов
/ 06 июня 2019

Проблема с process.env.TZ = 'UTC'; состоит в том, что если что-то запускается до этой строки и использует Date, значение будет кэшировано в Date.Поэтому process.env в общем случае не подходит для установки часового пояса.См. https://github.com/nodejs/node/issues/3449

Так что лучшим способом является использование фактической переменной env, но для тестов это будет работать:

1.Добавьте это к вашему package.json

  "jest": {
     ...
    "globalSetup": "../global-setup.js"
  }
}

2.Поместите этот файл помимо package.json как global-setup.js

module.exports = async () => {
    process.env.TZ = 'UTC';
};

3.Необязательно: Добавьте тест, который гарантирует выполнение UTC

describe('Timezones', () => {
    it('should always be UTC', () => {
        expect(new Date().getTimezoneOffset()).toBe(0);
    });
});

Обычный setupFiles не работает не работает для меня, так как они запускаются слишком поздно (jest: ^ 23.5.0).Так что обязательно использовать файл globalSetup.

1 голос
/ 23 мая 2019

Я просто столкнулся с той же проблемой, и мне удалось ее решить, добавив process.env.TZ = 'your/timezone'; к моему jest.config.js.

Может быть, это поможет и в вашем случае:)

process.env.TZ = 'UTC';

module.exports = {
  ...
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...