ForcePilot/backend/test/unit/channel/startup/test_ws_manager.py
Kris 6c95dc006a test: 新增渠道模块全链路单元测试用例与目录结构
完成渠道模块的单元测试目录搭建,新增多个领域模型、端口、中间件、事件、服务以及基础设施层的单元测试文件,同时补充了conftest.py的环境变量配置,完善测试基础环境。
2026-05-30 21:55:35 +08:00

88 lines
2.6 KiB
Python

from __future__ import annotations
from unittest.mock import AsyncMock, MagicMock
import pytest
from yuxi.channel.interfaces.websocket.manager import WSManager
class TestWSManager:
@pytest.fixture
def manager(self):
return WSManager()
@pytest.mark.asyncio
async def test_start(self, manager):
await manager.start()
assert manager.is_running is True
@pytest.mark.asyncio
async def test_stop(self, manager):
await manager.start()
await manager.stop()
assert manager.is_running is False
@pytest.mark.asyncio
async def test_stop_all(self, manager):
await manager.start()
ws = AsyncMock()
manager._connections["conn1"] = ws
await manager.stop_all()
ws.close.assert_awaited_once()
assert len(manager._connections) == 0
@pytest.mark.asyncio
async def test_register(self, manager):
await manager.start()
ws = AsyncMock()
await manager.register("conn1", ws)
assert "conn1" in manager._connections
@pytest.mark.asyncio
async def test_unregister(self, manager):
await manager.start()
ws = AsyncMock()
await manager.register("conn1", ws)
await manager.unregister("conn1")
assert "conn1" not in manager._connections
@pytest.mark.asyncio
async def test_send_to(self, manager):
await manager.start()
ws = AsyncMock()
await manager.register("conn1", ws)
await manager.send_to("conn1", {"type": "message"})
ws.send.assert_awaited_once()
@pytest.mark.asyncio
async def test_send_to_nonexistent(self, manager):
await manager.start()
await manager.send_to("nonexistent", {"type": "message"})
@pytest.mark.asyncio
async def test_broadcast(self, manager):
await manager.start()
ws1 = AsyncMock()
ws2 = AsyncMock()
await manager.register("conn1", ws1)
await manager.register("conn2", ws2)
await manager.broadcast({"type": "message"})
ws1.send.assert_awaited_once()
ws2.send.assert_awaited_once()
@pytest.mark.asyncio
async def test_get_connection(self, manager):
await manager.start()
ws = AsyncMock()
await manager.register("conn1", ws)
result = manager.get_connection("conn1")
assert result is ws
def test_get_connection_not_found(self, manager):
result = manager.get_connection("nonexistent")
assert result is None
def test_connection_count(self, manager):
assert manager.connection_count == 0