#javascript #unit-testing #datetime #jenkins #jestjs
Вопрос:
Я использую date-fns для разбора некоторых строк, похожих на даты, на даты, а затем обратно в строку, вот так. Мои локальные модульные тесты проходят, но в Jenkins CICD мои модульные тесты проваливаются. Я почти уверен, что это связано с тем, что машина Дженкинса находится в часовом поясе GMT 0, в то время как я нахожусь в часовом поясе GMT 8. Результаты неудачных тестов в Дженкинсе подтверждают это, так как полученные значения на 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
В моем CICD Дженкинса я получаю 14:00
вместо этого. Является ли это распространенной проблемой, и как быстро я могу исправить свои модульные тесты, чтобы они могли передаваться Дженкинсу?
Комментарии:
1. Я не могу этого сказать, если это общая проблема. Но я также сталкиваюсь с проблемой с датой и временем в Дженкинсе. В вашем случае я бы запустил тесты внутри контейнера docker на Дженкинсе.
2. Учитывая, что метка времени имеет смещение, она должна быть проанализирована до точно такого же значения времени в обеих средах, но время, возвращаемое из формата , будет локальным. Таким образом, отформатированное время будет только 22:00, если среда имеет то же смещение, что и метка времени (т. е. 8).