无法在玩笑中嘲笑日期/时刻

时间:2020-05-06 17:32:36

标签: mocking jestjs momentjs

我正在为一个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');
  });

但是,当我运行测试时,它总是收到“未定义”而不是日期。我不知道怎么了。

1 个答案:

答案 0 :(得分:1)

我试图重述您的案子,您应该可以使用spyOnmockReturnValue来做类似this的事情:
jest.spyOn(Date, "now").mockReturnValue(new Date(1587893830000).getTime());

此外,您的格式输入'MMM Do YY'与预期的输出'May April 26th 2020'不符,应该是'Apr 26th 20'