下面是我的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}`;
};