/** * WebSocket测试控制器测试 * * 功能描述: * - 测试WebSocket测试工具功能 * - 验证测试页面生成功能 * - 测试HTML内容和结构 * - 验证响应处理 * * 测试范围: * - 测试页面生成测试 * - HTML内容验证测试 * - 响应处理测试 * - 错误处理测试 * * 最近修改: * - 2026-01-12: Bug修复 - 修复测试用例中的方法名,只测试实际存在的方法 (修改者: moyin) * - 2026-01-12: 代码规范优化 - 创建测试文件,确保WebSocket测试控制器功能的测试覆盖 (修改者: moyin) * * @author moyin * @version 1.0.1 * @since 2026-01-12 * @lastModified 2026-01-12 */ import { Test, TestingModule } from '@nestjs/testing'; import { WebSocketTestController } from './websocket_test.controller'; import { Response } from 'express'; describe('WebSocketTestController', () => { let controller: WebSocketTestController; let mockResponse: jest.Mocked; beforeEach(async () => { const module: TestingModule = await Test.createTestingModule({ controllers: [WebSocketTestController], }).compile(); controller = module.get(WebSocketTestController); // Mock Express Response object mockResponse = { send: jest.fn(), status: jest.fn().mockReturnThis(), json: jest.fn(), setHeader: jest.fn(), } as any; }); it('should be defined', () => { expect(controller).toBeDefined(); }); describe('getTestPage', () => { it('should return WebSocket test page HTML', () => { // Act controller.getTestPage(mockResponse); // Assert expect(mockResponse.send).toHaveBeenCalledWith(expect.stringContaining('')); expect(mockResponse.send).toHaveBeenCalledWith(expect.stringContaining('WebSocket 测试工具')); }); it('should include WebSocket connection script', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('WebSocket'); expect(htmlContent).toContain('connect'); }); it('should include test controls', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('button'); expect(htmlContent).toContain('input'); }); it('should include connection status display', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('status'); expect(htmlContent).toContain('connected'); }); it('should include message history display', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('message'); expect(htmlContent).toContain('log'); }); it('should include notification system features', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('通知'); expect(htmlContent).toContain('notice'); // 使用实际存在的英文单词 }); it('should include API monitoring features', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('API'); expect(htmlContent).toContain('监控'); }); it('should generate valid HTML structure', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain(''); expect(htmlContent).toContain(''); expect(htmlContent).toContain(''); }); it('should include required meta tags', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain(''); expect(htmlContent).toContain('viewport'); }); it('should include WebSocket JavaScript code', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain(''); }); it('should include CSS styling', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain(''); }); it('should include JWT token functionality', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('JWT'); expect(htmlContent).toContain('token'); }); it('should include login and registration features', () => { // Act controller.getTestPage(mockResponse); // Assert const htmlContent = mockResponse.send.mock.calls[0][0]; expect(htmlContent).toContain('登录'); expect(htmlContent).toContain('注册'); }); it('should handle response object correctly', () => { // Act controller.getTestPage(mockResponse); // Assert expect(mockResponse.send).toHaveBeenCalledTimes(1); expect(mockResponse.send).toHaveBeenCalledWith(expect.any(String)); }); }); });