代码之家  ›  专栏  ›  技术社区  ›  Daniel Kaplan

我可以指定“现在”使用的是什么时刻吗。js?

  •  0
  • Daniel Kaplan  · 技术社区  · 7 年前

    我在利用时间。js和我想写一个测试,上面写着:“如果你没有通过日期,它就会返回 now() “问题是,每次测试运行时, 现在() 将是一个不同的结果。在其他库中,可以设置 现在() 将返回进行测试。这一刻我不知道。js提供了一种方法吗?我一直在谷歌上搜索,没有找到任何结果表明你是否能做到这一点。

    0 回复  |  直到 7 年前
        1
  •  3
  •   Dr_Derp    7 年前

    计时员( https://www.npmjs.com/package/timekeeper )正好满足了这个需求。

    它会覆盖日期构造函数(moment在引擎盖下使用),因此它也会在当前工作。

    您可以执行以下操作:

    const timekeeper = require('timekeeper');
    
    const freezeDate = new Date();
    timekeeper.freeze(freezeDate);
    
    // in your test
    expect(result).to.equal(freezeDate);
    
        2
  •  1
  •   caladeve    7 年前

    您可以更改时间源(它基本上用新的 Date.now )在每次测试之前,请执行以下操作 from the official momentjs docs 。返回自unix纪元时间(1/1/1970)以来的毫秒数。

    moment.now = function () {
        return +new Date();
    }