Не могу издеваться над датой / моментом в Jest - PullRequest
0 голосов
/ 06 мая 2020

Я пишу тест для метода Vue, который использует момент для форматирования и возврата сегодняшней даты, и я пытаюсь имитировать момент в моем тесте, чтобы «сегодняшняя дата» не всегда менялась, когда я запускаю свои тесты.

Мой метод

return `Today is ${moment().format('MMM Do YY')}`;

Я читал это, поскольку Moment в любом случае полагается на Date.now (), вы можете просто посмеяться над этим.

В моем тесте у меня есть:

test('prints out daily greeting', () => {
    Date.now = jest.fn(() => 1587893830000);

    expect(GreetingPage.methods.greetingMessage.toBe('Today is May April 26th 2020');
  });

Однако, когда я запускаю свой тест, он всегда получает undefined вместо даты. Я не уверен, что случилось.

1 Ответ

1 голос
/ 06 мая 2020

Я попытался воспроизвести ваш случай, и вы сможете сделать что-то вроде this , используя spyOn и mockReturnValue, например:
jest.spyOn(Date, "now").mockReturnValue(new Date(1587893830000).getTime());

Кроме того, ваш входной формат 'MMM Do YY' не соответствует ожидаемому результату 'May April 26th 2020', который должен быть 'Apr 26th 20'.

...