Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jest快照在计算机时间戳(AM/PM)上测试失败_Javascript_Reactjs_Jestjs_Snapshot - Fatal编程技术网

Javascript Jest快照在计算机时间戳(AM/PM)上测试失败

Javascript Jest快照在计算机时间戳(AM/PM)上测试失败,javascript,reactjs,jestjs,snapshot,Javascript,Reactjs,Jestjs,Snapshot,我有一个jest测试在日期和时间上失败,我认为这是因为运行它的用户的计算机设置不同。这是一个快照测试,不是一个精确的失败,因为我们想显示用户的时区 -2019年7月26日上午11:59:42 +2019年7月26日11:59:42在节点(v12及以下版本)上运行jest时,它没有完全本地化。您可能需要安装。 然后您可以在package.json上设置测试脚本,如下所示 NODE\u ICU\u DATA=NODE\u模块/完整ICU笑话 您可以阅读该表,该表描述了它在此节点上不支持区域设置 请

我有一个jest测试在日期和时间上失败,我认为这是因为运行它的用户的计算机设置不同。这是一个快照测试,不是一个精确的失败,因为我们想显示用户的时区

-2019年7月26日上午11:59:42
+2019年7月26日11:59:42
在节点(v12及以下版本)上运行jest时,它没有完全本地化。您可能需要安装。 然后您可以在package.json上设置测试脚本,如下所示

NODE\u ICU\u DATA=NODE\u模块/完整ICU笑话

您可以阅读该表,该表描述了它在此节点上不支持区域设置


请注意,在节点14处,Its现在配备了内置ICU。因此,如果你的应用程序可以在v14上运行。下载带有nvm的v14并再次尝试运行。如果不去全icu模拟本地化支持,我最终只需要模拟日期和时间功能

     jest
       .spyOn(Date.prototype, 'toLocaleTimeString')
       .mockImplementation(() => '12:00:00');
     jest
       .spyOn(Date.prototype, 'toLocaleDateString')
       .mockImplementation(() => 'AM 1/01/2021');

您可以模拟
日期

如果您使用这种方法,您可以根据自己的需要完全定制它

// jest.config.js
{
  // ...
  setupFilesAfterEnv: [
    "./mocks/date.js"
  ]
}

您是否考虑过只使用
date fns
进行可配置和确定的时间格式设置?@ChristianIvicevic时间格式按照我希望的方式工作,但它只是让测试使用相同的区域设置和时间戳运行。我正在运行节点v15.14.0我更喜欢在globalconfig中设置它,或者不添加额外的库。我不知道为什么节点15不工作
// mocks/date.js
class MockDate {
...
}

let RealDate;
beforeAll(() => {
  RealDate = global.Date;
  global.Date = MockDate;
});

afterAll(() => {
  global.Date = RealDate;
});