"""GraphitiClient driver.close() 异常处理测试."""
import pytest
from unittest.mock import Mock, patch
from src.graphiti_client import GraphitiClient
from src.config_manager import ConfigManager
class TestGraphitiClientDriverCloseException:
"""GraphitiClient driver.close() 异常处理测试类."""
@pytest.fixture
def config_manager(self, temp_config_dir):
"""创建配置管理器."""
return ConfigManager(config_path=temp_config_dir / ".graphitiace" / "config.json")
def test_driver_close_exception(self, config_manager):
"""测试 driver.close() 抛出异常时的处理(行79-80)."""
client = GraphitiClient(config_manager)
# 配置 Neo4j
config_manager.configure_neo4j(
uri="bolt://localhost:7687",
username="neo4j",
password="test"
)
# Mock driver,让 close() 抛出异常
mock_driver = Mock()
mock_driver.close.side_effect = Exception("Close error")
# Mock GraphDatabase.driver 抛出连接异常,但在异常处理中设置 driver
def mock_driver_creator(*args, **kwargs):
client.driver = mock_driver
raise Exception("Connection error")
with patch('src.graphiti_client.GraphDatabase.driver', side_effect=mock_driver_creator):
result = client.connect()
# 应该返回 False,并且 driver 应该被清理(即使 close() 抛出异常)
assert result is False
# 验证 close() 被调用(即使抛出异常)
mock_driver.close.assert_called_once()
assert client.driver is None