diff --git a/packages/react/runtime/__test__/utils/globals.js b/packages/react/runtime/__test__/utils/globals.js index e247909cac..1a3e8a6049 100644 --- a/packages/react/runtime/__test__/utils/globals.js +++ b/packages/react/runtime/__test__/utils/globals.js @@ -31,17 +31,35 @@ const performance = { }), }; -const CoreContext = { - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - dispatchEvent: vi.fn(), -}; +class EventListener { + _listeners = {}; + _addEventListener = (type, listener) => { + if (this._listeners[type]) { + this._listeners[type].push(listener); + } else { + this._listeners[type] = [listener]; + } + }; + _removeEventListener = (type, listener) => { + if (this._listeners[type]) { + this._listeners[type] = this._listeners[type].filter((l) => l !== listener); + } + }; + _dispatchEvent = (event) => { + if (this._listeners[event.type]) { + this._listeners[event.type].forEach((listener) => listener(event)); + } + }; -const JsContext = { - addEventListener: vi.fn(), - removeEventListener: vi.fn(), - dispatchEvent: vi.fn(), -}; + addEventListener = vi.fn(this._addEventListener); + + removeEventListener = vi.fn(this._removeEventListener); + + dispatchEvent = vi.fn(this._dispatchEvent); +} + +const coreContext = new EventListener(); +const jsContext = new EventListener(); function injectGlobals() { globalThis.__DEV__ = true; @@ -67,8 +85,8 @@ function injectGlobals() { }, }; }), - getCoreContext: vi.fn(() => CoreContext), - getJSContext: vi.fn(() => JsContext), + getCoreContext: vi.fn(() => coreContext), + getJSContext: vi.fn(() => jsContext), }; globalThis.requestAnimationFrame = setTimeout; globalThis.cancelAnimationFrame = clearTimeout;