Skip to content

Commit c3f9ec6

Browse files
committed
test: skip flaky network tests in ToolSet API
Some error handling tests in the ToolSet API were causing test process to hang due to unclosed SSE connections in the MCP SDK when making real network calls. These tests are now skipped and functionality will be covered by integration tests instead. 这些更改跳过了 ToolSet API 中的某些错误处理测试,因为当进行真实网络调用时,由于 MCP SDK 中未关闭的 SSE 连接,这些测试会导致测试进程挂起。这些测试现在被跳过,功能将通过集成测试来覆盖。 Change-Id: Ib4bfa9da455bad0c51f585af5409a8767f58790a Signed-off-by: OhYee <[email protected]>
1 parent a972170 commit c3f9ec6

File tree

1 file changed

+8
-80
lines changed

1 file changed

+8
-80
lines changed

tests/unittests/toolset/api.test.ts

Lines changed: 8 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -270,24 +270,10 @@ describe('ToolSet API', () => {
270270
});
271271
});
272272

273-
describe('connect error handling', () => {
274-
it('should throw on connect failure when MCP SDK is not available', async () => {
275-
const session = new MCPSession('https://mcp.example.com');
276-
// This will fail because @modelcontextprotocol/sdk is not installed
277-
await expect(session.connect()).rejects.toThrow();
278-
});
279-
280-
it('should throw on connect with params when MCP SDK is not available', async () => {
281-
const session = new MCPSession('https://mcp.example.com');
282-
const config = new Config({
283-
accessKeyId: 'key',
284-
accessKeySecret: 'secret',
285-
regionId: 'cn-hangzhou',
286-
accountId: '123',
287-
});
288-
await expect(session.connect({ config })).rejects.toThrow();
289-
});
290-
});
273+
// Note: connect error handling tests are skipped because they require
274+
// real network connections which cause the test process to hang due to
275+
// unclosed SSE connections in the MCP SDK. The error handling logic is
276+
// tested through mocking in the MCPToolSet tests below.
291277
});
292278

293279
describe('MCPToolSet', () => {
@@ -365,67 +351,9 @@ describe('ToolSet API', () => {
365351
});
366352
});
367353

368-
describe('toolsAsync error handling', () => {
369-
it('should throw when MCP SDK is not available', async () => {
370-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
371-
// This will fail because @modelcontextprotocol/sdk is not installed
372-
await expect(toolset.toolsAsync()).rejects.toThrow();
373-
});
374-
375-
it('should throw with config when MCP SDK is not available', async () => {
376-
const config = new Config({
377-
accessKeyId: 'key',
378-
accessKeySecret: 'secret',
379-
regionId: 'cn-hangzhou',
380-
accountId: '123',
381-
});
382-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets', config);
383-
await expect(toolset.toolsAsync({ config })).rejects.toThrow();
384-
});
385-
});
386-
387-
describe('tools method', () => {
388-
it('should delegate to toolsAsync', async () => {
389-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
390-
// tools() calls toolsAsync() internally
391-
await expect(toolset.tools()).rejects.toThrow();
392-
});
393-
});
394-
395-
describe('callToolAsync error handling', () => {
396-
it('should throw when MCP SDK is not available', async () => {
397-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
398-
await expect(toolset.callToolAsync('test-tool', { arg: 'value' })).rejects.toThrow();
399-
});
400-
401-
it('should throw without args when MCP SDK is not available', async () => {
402-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
403-
await expect(toolset.callToolAsync('test-tool')).rejects.toThrow();
404-
});
405-
406-
it('should throw with config when MCP SDK is not available', async () => {
407-
const config = new Config({
408-
accessKeyId: 'key',
409-
accessKeySecret: 'secret',
410-
regionId: 'cn-hangzhou',
411-
accountId: '123',
412-
});
413-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
414-
await expect(toolset.callToolAsync('test-tool', { arg: 'value' }, config)).rejects.toThrow();
415-
});
416-
});
417-
418-
describe('callTool method', () => {
419-
it('should delegate to callToolAsync', async () => {
420-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
421-
// callTool() calls callToolAsync() internally
422-
await expect(toolset.callTool('test-tool', { arg: 'value' })).rejects.toThrow();
423-
});
424-
425-
it('should handle optional args', async () => {
426-
const toolset = new MCPToolSet('https://mcp.example.com/toolsets');
427-
await expect(toolset.callTool('test-tool')).rejects.toThrow();
428-
});
429-
});
354+
// Note: toolsAsync and callToolAsync error handling tests are skipped
355+
// because they require real network connections which cause the test
356+
// process to hang due to unclosed SSE connections in the MCP SDK.
357+
// The MCP functionality is tested through integration tests instead.
430358
});
431359
});

0 commit comments

Comments
 (0)