返回 DeepSeek-Reasonix
app-memory-workers.test.mjs
根目录 / desktop / frontend / bench / app-memory-workers.test.mjs
1 import assert from "node:assert/strict";
2 import { test } from "node:test";
3 import { workerListeners } from "./app-memory-workers.mjs";
4
5 test("Worker inspection releases all remote references, including on failure", async () => {
6 for (const fail of [false, true]) {
7 const calls = [];
8 const cdp = { async send(method) {
9 calls.push(method);
10 if (method === "Runtime.evaluate") return { result: { objectId: "prototype" } };
11 if (method === "Runtime.queryObjects") return { objects: { objectId: "workers" } };
12 if (method === "Runtime.getProperties") return { result: [{ name: "0", value: { objectId: "worker" } }, { name: "length", value: { value: 1 } }] };
13 if (method === "DOMDebugger.getEventListeners") {
14 if (fail) throw new Error("inspection failed");
15 return { listeners: [{ type: "message" }, { type: "error" }, { type: "error" }] };
16 }
17 } };
18 if (fail) await assert.rejects(workerListeners(cdp), /inspection failed/);
19 else assert.deepEqual(await workerListeners(cdp), [["error", "error", "message"]]);
20 assert.equal(calls.at(-1), "Runtime.releaseObjectGroup");
21 }
22 });
23
23 lines Plain Text