"""Spike: 验证 vnpy 4.4.0 数据库接口。无 NAS 数据时可 skip。""" import datetime import pytest from vnpy.trader.constant import Interval, Exchange from unittest.mock import Mock def test_vnpy44_database_interface(monkeypatch): """验证 vnpy 4.4.0 数据库接口存在性和签名.""" # 避免 read_db_daily 全局 SETTINGS 污染:创建 mock database 对象 # 这样 spike 测试只验证接口存在 + 签名,不实际连接数据库 mock_db = Mock() mock_db.load_bar_data = Mock(return_value=[]) mock_db.save_bar_data = Mock() # Mock get_database at module level to avoid import issues import vnpy.trader.database monkeypatch.setattr(vnpy.trader.database, "get_database", lambda: mock_db) from vnpy.trader.database import get_database db = get_database() assert hasattr(db, "load_bar_data") assert hasattr(db, "save_bar_data") # 测试 load_bar_data 签名 bars = db.load_bar_data( symbol="600000", exchange=Exchange.SSE, interval=Interval.DAILY, start=datetime.datetime(2026, 1, 1), end=datetime.datetime(2026, 6, 30), ) assert isinstance(bars, list)