Установите часовой пояс момента в Jest тестах - PullRequest
0 голосов
/ 23 мая 2019

У меня есть функция util, которая анализирует заданную дату (то есть '2019-01-28') в определенном формате даты, а затем использует momentJS, получая начало этого дня и преобразовывая его в формат даты ISO:

dates.js

import moment from 'moment'

export const getApiDateFormat = (date, dateFormat = getLocaleDateString()) =>
    moment(date, dateFormat)
      .startOf('day')
      .toISOString()

Я хотел бы протестировать эту функцию, используя Jest и установить конкретный часовой пояс для moment, чтобы использовать эти тесты независимо от моего местоположения.

Пока у меня есть:

dates.test.js

const formattedDate = '2019-01-27T23:00:00.000Z'

test('date in russian format - 28.01.2019', () => {
      const russianDateFormat = 'DD.MM.YYYY'
      expect(getApiDateFormat('28.01.2019', russianDateFormat)).toEqual(
        formattedDate,
      )
    })

, поскольку в данный момент я нахожусь в Europe/Warsaw часовом поясе. Как сделать это место проверки независимым?

Я пытался использовать jest.mock, чтобы заменить moment, используемый getApiDateFormat, на moment.tz.setDefault("America/New_York"), однако все мои попытки потерпели неудачу, поскольку они не влияют на moment lib, импортируемую getApiDateFormat.

Как решить такую ​​проблему и правильно ее протестировать?

...