"""GraphitiClient _initialize_graphiti 异常处理测试(最终版本)."""
import pytest
from unittest.mock import Mock, patch, MagicMock
from src.graphiti_client import GraphitiClient
from src.config_manager import ConfigManager
class TestGraphitiClientInitializeExceptionFinal:
"""GraphitiClient _initialize_graphiti 异常处理测试类(最终版本)."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
def test_initialize_graphiti_exception(self, config_manager):
"""测试 _initialize_graphiti 异常处理(行121-125)."""
client = GraphitiClient(config_manager)
# 配置 API 和 Neo4j
config_manager.configure_api(
provider="openai",
api_key="test_key"
)
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
# Mock Graphiti 初始化抛出异常
# 需要确保 Graphiti 类在实例化时抛出异常(行114)
# 创建一个会在调用时抛出异常的 Mock Graphiti 类
class MockGraphitiError:
def __init__(self, *args, **kwargs):
raise Exception("Initialization error")
with patch('src.graphiti_client.Graphiti', MockGraphitiError):
from src.logger import default_logger
with patch.object(default_logger, 'error') as mock_logger_error:
result = client._initialize_graphiti()
# 应该返回 False(行125)
assert result is False
assert client.graphiti is None # 行123
assert client._graphiti_initialized is True # 行124
# 验证 logger.error 被调用(行167)
mock_logger_error.assert_called_once()
assert "初始化 Graphiti 失败" in str(mock_logger_error.call_args)