es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo simular moment.locale en una prueba Jest

Tengo propiedades sobrescritas para los formatos de localización:

moment.updateLocale("en", {
  longDateFormat: {l: "MMM D", LTS: "h:mm a"}
});

Quiero probar la función:

export function getFormattedDate(date) {
  return moment.unix(date).format("l [at] LTS");
}

La prueba falla con el siguiente error:

Expected: "May 20 at 2:33 am"
Received: "5/20/2021 at 2:33:28 AM"

La prueba de jest:

test("Should format date", () => {
  const expected = "May 20 at 2:33 am";
  const result = getFormattedDate(date);
  expect(result).toEqual(expected);
});

Después de establecer updateLocale en el archivo de prueba, la prueba es exitosa:

moment.updateLocale("en", {
  longDateFormat: {l: "MMM D", LTS: "h:mm a"}
});

Pero no me parece adecuado actualizar la configuración local directamente en la prueba. ¿Hay alguna otra forma de que las pruebas conozcan la configuración local actual?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una mejor manera de manejar la configuración regional actual en las pruebas sin actualizarla directamente en el archivo de prueba. Puedes crear un archivo de configuración separado para la configuración regional e importarlo tanto en el archivo de código principal como en el archivo de prueba. De esta manera, cualquier cambio en el formato de la configuración regional se reflejará en ambos archivos y no tendrás que actualizarlo en varios lugares.

    Por ejemplo, podrías crear un archivo config.js con el siguiente código:

    import moment from 'moment';
    
    moment.updateLocale('en', {
      longDateFormat: {l: 'MMM D', LTS: 'h:mm a'}
    });
    

    Luego, tanto en index.js como en index.test.js, puedes importar el archivo de configuración de esta manera:

    import './config';
    

    De esta manera, el formato de la configuración regional se configurará antes de que se ejecuten cualquier código o pruebas, garantizando la consistencia en ambos casos.

Comments are closed.