test(llm-mock-server): await disconnect outcome

This commit is contained in:
Tianyi Cui
2026-07-26 02:59:19 +08:00
parent 6dd1ce1c9b
commit 5e4026d768

View File

@@ -169,17 +169,21 @@ describe('mock LLM server wire behaviors', () => {
['partial_disconnect', 100] as const, ['partial_disconnect', 100] as const,
])('records a client that closes during %s', async (behavior, delayMs) => { ])('records a client that closes during %s', async (behavior, delayMs) => {
const events: MockLlmServerEvent[] = [] const events: MockLlmServerEvent[] = []
const result = Promise.withResolvers<Extract<MockLlmServerEvent, { type: 'result' }>>()
const server = await start([behavior], { const server = await start([behavior], {
chunkDelayMs: delayMs, chunkDelayMs: delayMs,
disconnectDelayMs: delayMs, disconnectDelayMs: delayMs,
chunkSize: 1, chunkSize: 1,
onEvent: (event) => { events.push(event) }, onEvent: (event) => {
events.push(event)
if (event.type === 'result') result.resolve(event)
},
}) })
const controller = new AbortController() const controller = new AbortController()
const response = await chat(server, { signal: controller.signal }) const response = await chat(server, { signal: controller.signal })
controller.abort() controller.abort()
await expect(response.text()).rejects.toThrow() await expect(response.text()).rejects.toThrow()
await new Promise((resolve) => { setTimeout(resolve, 5) }) await result.promise
expect(server.requests[0]).toMatchObject({ behavior, outcome: 'client_closed' }) expect(server.requests[0]).toMatchObject({ behavior, outcome: 'client_closed' })
expect(events.filter(event => event.type === 'result')).toEqual([ expect(events.filter(event => event.type === 'result')).toEqual([