我正在为一个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');
});
但是,当我运行测试时,它总是收到“未定义”而不是日期。我不知道怎么了。
答案 0 :(得分:1)
我试图重述您的案子,您应该可以使用spyOn
和mockReturnValue
来做类似this的事情:
jest.spyOn(Date, "now").mockReturnValue(new Date(1587893830000).getTime());
此外,您的格式输入'MMM Do YY'
与预期的输出'May April 26th 2020'
不符,应该是'Apr 26th 20'
。