import renderer from 'react-test-renderer'; test('TestName', async () => { let componentRenderer = null; const now = new Date('2000-01-01T10:00:00.135Z'); jest.spyOn(global, 'Date').mockImplementation(() => now); await renderer.act(async () => { componentRenderer = await renderer.create(<Order orderId={0} />); }); const orderFormComponent = componentRenderer.toJSON(); expect(orderFormComponent).toMatchSnapshot(); });No funciona en absoluto. Siempre es una llamada regular de "nueva fecha ()". Quiero decir que funciona bien si lo llamas directamente en el código de prueba debajo de las líneas simuladas. Pero necesito que se llame a la "nueva fecha ()" simulada dentro de mi componente funcional cuando se crea aquí:
renderer.create(<Order orderId={0} />)
He encontrado que este enfoque es el más genérico:
export class MockDate extends Date { constructor(arg) { super(arg || 1); } } beforeAll(() => { global.Date = MockDate as DateConstructor; }); afterAll(() => { global.Date = Date; }); Luego, en sus pruebas, console.log(new Date()) === MockDate 1970-01-01T00:00:00.001Z