"""测试 server.py 中的 main 函数."""
import pytest
import asyncio
from unittest.mock import Mock, MagicMock, patch, AsyncMock
from src.server import create_server, main
class TestServerMain:
"""测试 server.py 中的 main 函数."""
@pytest.mark.asyncio
async def test_main_function(self):
"""测试 main 函数(603-614行)."""
# Mock stdio_server
mock_read_stream = AsyncMock()
mock_write_stream = AsyncMock()
mock_server = MagicMock()
mock_server.create_initialization_options.return_value = {}
mock_server.run = AsyncMock() # 使 run 成为异步函数
with patch('src.server.create_server', return_value=mock_server):
with patch('src.server.stdio_server') as mock_stdio_server:
# 模拟 async context manager
async_context_manager = AsyncMock()
async_context_manager.__aenter__ = AsyncMock(return_value=(mock_read_stream, mock_write_stream))
async_context_manager.__aexit__ = AsyncMock(return_value=None)
mock_stdio_server.return_value = async_context_manager
# 调用 main 函数
await main()
# 验证 server.run 被调用
mock_server.run.assert_called_once()
mock_server.create_initialization_options.assert_called_once()
def test_create_server_returns_server(self):
"""测试 create_server 返回 Server 实例."""
server = create_server()
assert server is not None
assert hasattr(server, 'request_handlers')
@pytest.mark.asyncio
async def test_main_function_with_exception(self):
"""测试 main 函数异常处理."""
with patch('src.server.create_server', side_effect=Exception("Test error")):
with pytest.raises(Exception):
await main()