En mi aplicación de reacción, pruebo diferentes constructores de eventos en una declaración de cambio de caso. Algo como eso:
switch (event.constructor) { case String: doSomething() break; case Array: doSomething() break; case Date: doSomething() break; case PointerEvent: doSomething() break; default: doSomething() break; Si pruebo esta configuración con una broma, siempre me arroja el error ReferenceError: PointerEvent is not defined . Puedo solucionar este problema configurando PointerEvent en window.PointerEvent . Pero el evento en mi entorno de broma tiene el tipo MouseEvent .
¿Cómo puedo configurar PointerEvent como un alias para MouseEvent durante la prueba? ¿O hay alguna forma de importar y ejecutar un PointerEvent en broma?
"@mui/material": "^5.6.3", "@testing-library/jest-dom": "^5.14.1", "@testing-library/react": "^13.0.0", "@testing-library/user-event": "^13.2.1", "react": "^18.0.0", "react-dom": "^18.0.0",Si observa este problema, puede ver que jsdom parece no implementar PointerEvent
Sin embargo, puedes solucionar esto.
class MockPointerEvent {} describe("PointerEvent", () => { beforeEach(() => { global.window.PointerEvent = MockPointerEvent as any; }); it("confirms pointer event", () => { const pointerEvent = new PointerEvent(""); expect(pointerEvent).toBeTruthy(); }); });