У меня есть функция 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
.
Как решить такую проблему и правильно ее протестировать?