"""GraphitiClient 初始化异常打印测试."""
import pytest
from unittest.mock import Mock, patch
from src.graphiti_client import GraphitiClient
from src.config_manager import ConfigManager
class TestGraphitiClientInitializeExceptionPrint:
"""GraphitiClient 初始化异常打印测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
def test_initialize_graphiti_exception_with_print(self, config_manager):
"""测试初始化 Graphiti 异常并打印(覆盖行110-114)."""
# 配置 API 和 Neo4j
config_manager.configure_api(
provider="openai",
api_key="test_key"
)
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
client = GraphitiClient(config_manager)
# Mock Graphiti 初始化抛出异常
# 创建一个会在实例化时抛出异常的 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,并且 graphiti 应该为 None
assert result is False
assert client.graphiti is None
assert client._graphiti_initialized is True
# 验证 logger.error 被调用(行167)
mock_logger_error.assert_called_once()
assert "初始化 Graphiti 失败" in str(mock_logger_error.call_args)