Estoy tratando de preparar un simulacro de objeto Date para hacer que el tiempo sea constante y probarlo. No sé cómo probar si tengo más de un objeto Date declarado en la función que quiero probar. Por ejemplo, en el siguiente código, la función dayRange devuelve un rango de un día. Si proporciona el siguiente simulacro durante la prueba, la función dayRange se verá como la del código.
export const dayRnage = (): [Date, Date] => { const begin = new Date(); begin.setHours(0); begin.setMinutes(0); begin.setSeconds(0); begin.setMilliseconds(0); const end = new Date(begin); end.setDate(begin.getDate() + 1); end.setMilliseconds(-1); return [begin, end]; };¡No podemos manejar más de un objeto Date porque el simulacro devuelve el mismo objeto! ¿Cómo puedo manejar los objetos Date por separado?
describe("smaple test", () => { beforeEach(() => { const mockDate = new Date("2021-09-26T00:00:00.000Z"); jest.spyOn(global, "Date").mockImplementation((): any => { return mockDate; }); }); test("test", () => { console.log(dayRnage()); }); }); // result => [ 2021-09-26T14:59:59.999Z, 2021-09-26T14:59:59.999Z ] // expect => [ 2021-09-25T15:00:00.000Z, 2021-09-26T14:59:59.999Z ]