gpt4 book ai didi

node.js - 如何更改 Node 应用程序实例中的服务器时间

转载 作者:太空宇宙 更新时间:2023-11-03 21:50:11 25 4
gpt4 key购买 nike

我有一个严重依赖时间的应用程序。为了使测试更容易,我希望能够在特定时间点启动我的 Node 应用程序。

NODE_FAKE_TIME=true node app.js 

我在我的 app.js 中使用类似的东西

if(process.env.NODE_FAKE_TIME) { 
var time = parseInt(moment(moment().format('YYYY-MM-DD 04:00:00')).format('XSSS'));
var clock = sinon.useFakeTimers(time, "Date");
}

但是,除了使用 sinon 的 useFakeTimers 之外,还有更好的方法吗?因为这样做确实会改变时钟时间......但是它会影响其他事物,例如 setIntervals 和 setTimeOuts。

我只是想要一种干净的方式来指定应用程序中的时间,因此在我使用 Date.now 的任何地方,它都会按照我在运行时指定的时间进行。

谢谢

最佳答案

我在单元测试中通过直接替换日期上的方法来完成此操作:

    var oldNow = Date.now;
var oldGetTime = Date.prototype.getTime;

Date.now = function() { return 0; }
Date.prototype.getTime = Date.now;

上面将自 1970 年 1 月 1 日 00:00:00 以来的时间设置为零 - 只需将返回的值替换为您感兴趣的时间即可。

关于node.js - 如何更改 Node 应用程序实例中的服务器时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18470193/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com