项目迁移
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
import assert from 'node:assert/strict';
|
||||
import { api } from '../src/client/api.mjs';
|
||||
|
||||
const originalFetch = globalThis.fetch;
|
||||
let calls = 0;
|
||||
let release;
|
||||
globalThis.fetch = async () => {
|
||||
calls += 1;
|
||||
await new Promise(resolve => { release = resolve; });
|
||||
return new Response(JSON.stringify({ ok: true, calls }), { status: 200, headers: { 'Content-Type': 'application/json' } });
|
||||
};
|
||||
|
||||
try {
|
||||
const first = api('/api/large-ledger');
|
||||
const second = api('/api/large-ledger');
|
||||
await Promise.resolve();
|
||||
assert.equal(calls, 1, '并发的相同 GET 请求应只发送一次');
|
||||
release();
|
||||
assert.deepEqual(await first, { ok: true, calls: 1 });
|
||||
assert.deepEqual(await second, { ok: true, calls: 1 });
|
||||
} finally {
|
||||
globalThis.fetch = originalFetch;
|
||||
}
|
||||
|
||||
console.log('API read deduplication tests passed');
|
||||
Reference in New Issue
Block a user