diff --git a/src/app/service/content/listener_manager.test.ts b/src/app/service/content/listener_manager.test.ts index a99e12386..ac562974d 100644 --- a/src/app/service/content/listener_manager.test.ts +++ b/src/app/service/content/listener_manager.test.ts @@ -109,4 +109,26 @@ describe.concurrent("ListenerManager(监听器管理器)", () => { lm.execute("solo", 100, "gone"); expect(spy).not.toHaveBeenCalled(); }); + + it.concurrent("clear()", () => { + const lm = new ListenerManager(); + const spyA = vi.fn(); + const spyB = vi.fn(); + const spyC = vi.fn(); + const spyD = vi.fn(); + + lm.add("k", spyA); + lm.add("k", spyB); + lm.add("z", spyC); + lm.add("k", spyD); + + lm.clear(); + + lm.execute("k", 9, "z"); + lm.execute("z", 1, "z"); + expect(spyA).not.toHaveBeenCalled(); + expect(spyB).not.toHaveBeenCalled(); + expect(spyC).not.toHaveBeenCalled(); + expect(spyD).not.toHaveBeenCalled(); + }); }); diff --git a/src/app/service/content/listener_manager.ts b/src/app/service/content/listener_manager.ts index c58ee146c..cc4de0f9e 100644 --- a/src/app/service/content/listener_manager.ts +++ b/src/app/service/content/listener_manager.ts @@ -37,4 +37,11 @@ export class ListenerManager void> { } return false; } + + public clear(): void { + for (const [_key, handlers] of this.listeners) { + handlers.clear(); + } + this.listeners.clear(); + } }