当前位置: 首页 > 面试题库 >

使用Date对象的组件在不同的时区中生成不同的快照

仲孙奇
2023-03-14
问题内容

我正在将Enzyme与酶转json一起使用来对React组件进行Jest快照测试。我正在测试一个DateRange组件的浅表快照,该组件使用当前范围(例如5/20/2016 - 7/18/2016)渲染一个显示字段,并DateInput允许两个组件选择一个Date值。这意味着我的快照包含了Date我传递给组件的s
DateInput以及它们自己解析的文本表示形式。在测试中,我使用创建了一些固定的日期new Date(1995, 4, 23)

当我在不同的时区中运行测试时,这会生成不同的快照 ,因为Date(year, month, ...)构造函数会在本地时区中创建日期。例如,使用new Date()会在本地时区和CI服务器上的快照之间产生快照差异。

- value={1995-05-22T22:00:00.000Z}
+ value={1995-05-23T00:00:00.000Z}

我尝试从日期中删除时区偏移量,但是快照的显示字段值有所不同,其中使用了本地时区相关表示。

- value={5/20/2016 - 7/18/2016}
+ value={5/19/2016 - 7/17/2016}

Date 无论测试在哪个时区运行,如何使测试在快照中产生相同的?


问题答案:

我为此付出了数小时/几天的努力,只有这样对我有用:

1)在您的测试中:

Date.now = jest.fn(() => new Date(Date.UTC(2017, 7, 9, 8)).valueOf())

2)然后TZ在运行测试之前更改env var。所以我package.json中的脚本是:

  • 仅限Mac和Linux

    "test": "TZ=America/New_York react-scripts test --env=jsdom",
    
  • Windows

    "test": "set TZ=America/New_York && react-scripts test --env=jsdom",
    


 类似资料:
  • 假设我有一个数据帧,如下所示: 我想在时间分组一个重复的数据,并应用不同的函数到和(例如,求和和计算卷加权平均值)...我知道我能做到 将重复索引分组,然后使用或函数获取第一行或最后一行,但这并不是我真正想要的。 是否有方法对不同列中的值进行分组,然后应用不同的(由我编写的)函数?

  • 编辑:最后一个问题,如何通过值而不是引用来存储它?

  • 我正在尝试在Vue中实现从头开始的自动完成,但是我有问题在下拉菜单中选择选项。我正在启用(shownig)这个下拉列表,在点击输入或用户输入时。然后,在输入之外的焦点上,我想摆脱下拉列表。但是,这意味着当我选择dropdown中的内容时,我将关闭dropdown,而不是触发。如何同时保持对和对下拉选项?到目前为止,使起作用的唯一方法是删除,这不是我想要的...

  • 我有一个类Human,它包含两个字段,age(int)和name(String)。在eclipse中,我用这两个字段重写hashCode()和equals()方法。我还根据年龄字段创建了一个比较器。 现在,我用年龄比较器创建了一个TreeSet对象,还创建了Human类的两个实例(具有不同的字段值)。然后我将这两个对象添加到集合中,然而,集合中总是只有一个对象。 为了理解问题,我打印了这两个对象的

  • 我的简单问题是:如果我有两个类似logger的语句。info()和记录器。error()在Java中(使用log4j),我希望将这两行的结果打印在两个单独的文件中。也就是说,记录器。信息(…)应该打印到一个文件,比如myLog。信息和记录器。错误(…)应该打印到myLog。错误文件。我正在使用滚动文件追加器执行此任务。另外,我只需要一个记录器对象来完成任务。有人可能会建议两个或多个不同的记录器,每

  • 问题内容: 我尝试过一些关于绑定和未绑定方法的代码。当我们调用它们时,我认为它们都会返回对象。但是,当我用于获取一些信息时,它返回的内容我并不理解。 IDE:Eclipse 插件:pydev 输出是… 为什么#1和#2返回相同的ID?他们不是不同的对象吗?如果我们分配和两个变量,#3,#4回报不同的ID。 我认为#3和#4表明它们不是同一对象,而是#1和#2 … 绑定方法的ID和未绑定方法的ID有