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?
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:Luego, tanto en
index.js
como enindex.test.js
, puedes importar el archivo de configuración de esta manera: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.