【发布时间】:2022-02-14 08:28:16
【问题描述】:
我正在使用 date-fns 将一些类似日期的字符串解析为日期,然后再解析为字符串,就像这样。我的本地单元测试通过了,但在 Jenkins CICD 中,我的单元测试失败了。我很确定这是由于 Jenkins 机器在 GMT+0 中,而我在 GMT+8 时区。 Jenkins 中失败的测试结果支持了这一点,因为接收到的值比预期值晚了 8 小时。
import { format } from 'date-fns';
function stringToTime(date: string) {
const newDate = new Date(date);
return format(newDate, 'k:mm'); // this returns a string
}
还有我的单元测试:
const sampleText = 'Mon Aug 02 2021 22:00:15 GMT+0800';
const expectedText = '22:00';
expect(stringToTime(sampleText)).toEqual(expectedText); // this passes locally
在我的 Jenkins CICD 中,我收到了 14:00。这是一个常见问题吗?有什么快速的方法可以修复我的单元测试以便它可以传递给 Jenkins?
【问题讨论】:
-
如果这是一个常见问题,我不能说。但是,我也面临 Jenkins 中的日期时间问题。对于您的用例,我将在 jenkins 上的 docker 容器内运行测试。
-
鉴于时间戳有一个偏移量,它应该在两种环境中被解析为完全相同的时间值,但从 format 返回的时间将是本地时间。因此,如果环境具有与时间戳相同的偏移量(即 +8),则格式化时间仅为 22:00。
标签: javascript unit-testing datetime jenkins jestjs