Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
La prueba de unidad Jest para fecha y hora pasa en local, pero falla en Jenkins CICD

Estoy usando date-fns para analizar algunas cadenas similares a fechas en fechas, luego volver a convertirlas en una cadena, así. Mis pruebas unitarias locales están pasando, pero en Jenkins CICD, mis pruebas unitarias fallan. Estoy bastante seguro de que se debe a que la máquina Jenkins está en GMT+0, mientras que yo estoy en una zona horaria GMT+8. Los resultados de las pruebas fallidas en Jenkins lo respaldan, ya que los valores recibidos están 8 horas por detrás de los valores esperados.

 import { format } from 'date-fns'; function stringToTime(date: string) { const newDate = new Date(date); return format(newDate, 'k:mm'); // this returns a string }

Y mis pruebas unitarias:

 const sampleText = 'Mon Aug 02 2021 22:00:15 GMT+0800'; const expectedText = '22:00'; expect(stringToTime(sampleText)).toEqual(expectedText); // this passes locally

En mi Jenkins CICD, recibo 14:00 en su lugar. ¿Es este un problema común, y cuál es una forma rápida de arreglar mis pruebas unitarias para que pueda pasar a Jenkins?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Siempre he tenido problemas para usar los constructores de fechas al pasar una cadena de tiempo. Intente usar parseISO de date-fns fns como parseISO(date) en lugar de new Date(date) .

Además, debe importar desde 'date-fns/tmz' para pasar la información de la zona horaria. De esa manera, puede asegurarse de que las zonas horarias sean consistentes y analizadas. aquí hay un ejemplo de los documentos: https://date-fns.org/v2.28.0/docs/Time-Zones

 const { zonedTimeToUtc, utcToZonedTime, format } = require('date-fns-tz') // Set the date to "2018-09-01T16:01:36.386Z" const utcDate = zonedTimeToUtc('2018-09-01 18:01:36.386', 'Europe/Berlin') // Obtain a Date instance that will render the equivalent Berlin time for the UTC date const date = new Date('2018-09-01T16:01:36.386Z') const timeZone = 'Europe/Berlin' const zonedDate = utcToZonedTime(date, timeZone) // zonedDate could be used to initialize a date picker or display the formatted local date/time // Set the output to "1.9.2018 18:01:36.386 GMT+02:00 (CEST)" const pattern = 'dMyyyy HH:mm:ss.SSS \'GMT\' XXX (z)' const output = format(zonedDate, pattern, { timeZone: 'Europe/Berlin' })
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!