如何模拟在函数内部调用的新日期()?



下面是我的Js代码

export const getCurrentTimestamp = () => {
const d = new Date();
const date = d.toISOString().split('T')[0];
const time = d.toTimeString().split(' ')[0];
return `${date} ${time}`;
};

所以我需要模拟new Date()。下面是测试代码

test('verifying current timestamp', () => {
const now = new Date('2021-08-04T11:01:58.135Z');
jest.spyOn(global, 'Date').mockImplementation(() => now);
expect(getCurrentTimestamp()).toBe('2021-08-04 11:01:58');
});

但是测试失败了。我可以知道原因吗?

找到问题。实际上"d.toTimeString()";正在将模拟时间戳转换为本地时区。所以我做了下面的修改

const getCurrentTimestamp = () => {
const d = new Date();
console.log(d)
const date = d.toISOString().split('T')[0];
const time = d.toISOString().split('T')[1].split('.')[0]; // here is the change
return `${date} ${time}`;
};

相关内容

  • 没有找到相关文章

最新更新