blob: 345d6a2d68ccf68de2e4068d6211db6200eba1cc [file] [log] [blame]
Sure2338188c5d2025-05-28 11:43:06 +08001package com.pt5.pthouduan.ControllerTest;
2
21301050e4db6a92025-06-08 23:42:43 +08003
Sure2338188c5d2025-05-28 11:43:06 +08004import com.pt5.pthouduan.controller.InvitesController;
5import com.pt5.pthouduan.service.InviteService;
6import org.junit.jupiter.api.BeforeEach;
7import org.junit.jupiter.api.Test;
8import org.mockito.InjectMocks;
9import org.mockito.Mock;
10import org.mockito.MockitoAnnotations;
11
12import java.util.HashMap;
13import java.util.Map;
14
15import static org.junit.jupiter.api.Assertions.*;
16import static org.mockito.ArgumentMatchers.anyString;
17import static org.mockito.Mockito.*;
18
19class InvitesControllerTest {
20
21 @Mock
22 private InviteService inviteService;
23
24 @InjectMocks
25 private InvitesController invitesController;
26
27 @BeforeEach
28 void setUp() {
29 MockitoAnnotations.openMocks(this);
30 }
31
32 @Test
21301050e4db6a92025-06-08 23:42:43 +080033 void getUserInfo_Success() {
Sure2338188c5d2025-05-28 11:43:06 +080034 // 准备测试数据
Sure2338188c5d2025-05-28 11:43:06 +080035 Map<String, Object> expectedResponse = new HashMap<>();
36 expectedResponse.put("success", true);
21301050e4db6a92025-06-08 23:42:43 +080037 expectedResponse.put("invites", 5);
38 expectedResponse.put("username", "testuser");
Sure2338188c5d2025-05-28 11:43:06 +080039
21301050e4db6a92025-06-08 23:42:43 +080040 // 模拟服务层行为
41 when(inviteService.getInvitesByUsername(anyString()))
42 .thenReturn(expectedResponse);
Sure2338188c5d2025-05-28 11:43:06 +080043
44 // 执行测试
21301050e4db6a92025-06-08 23:42:43 +080045 Map<String, Object> actualResponse = invitesController.getUserInfo("testuser");
Sure2338188c5d2025-05-28 11:43:06 +080046
47 // 验证结果
48 assertEquals(expectedResponse, actualResponse);
21301050e4db6a92025-06-08 23:42:43 +080049 verify(inviteService, times(1)).getInvitesByUsername("testuser");
Sure2338188c5d2025-05-28 11:43:06 +080050 }
51
52 @Test
21301050e4db6a92025-06-08 23:42:43 +080053 void getUserInfo_UserNotFound() {
Sure2338188c5d2025-05-28 11:43:06 +080054 Map<String, Object> expectedResponse = new HashMap<>();
55 expectedResponse.put("success", false);
21301050e4db6a92025-06-08 23:42:43 +080056 expectedResponse.put("message", "用户不存在");
Sure2338188c5d2025-05-28 11:43:06 +080057
21301050e4db6a92025-06-08 23:42:43 +080058 when(inviteService.getInvitesByUsername(anyString()))
59 .thenReturn(expectedResponse);
Sure2338188c5d2025-05-28 11:43:06 +080060
21301050e4db6a92025-06-08 23:42:43 +080061 Map<String, Object> actualResponse = invitesController.getUserInfo("nonexistent");
Sure2338188c5d2025-05-28 11:43:06 +080062
Sure2338188c5d2025-05-28 11:43:06 +080063 assertEquals(expectedResponse, actualResponse);
64 assertFalse((Boolean) actualResponse.get("success"));
Sure2338188c5d2025-05-28 11:43:06 +080065 }
66
67 @Test
21301050e4db6a92025-06-08 23:42:43 +080068 void getUserInfo_EmptyUsername() {
Sure2338188c5d2025-05-28 11:43:06 +080069 Map<String, Object> expectedResponse = new HashMap<>();
70 expectedResponse.put("success", false);
21301050e4db6a92025-06-08 23:42:43 +080071 expectedResponse.put("message", "用户名不能为空");
Sure2338188c5d2025-05-28 11:43:06 +080072
21301050e4db6a92025-06-08 23:42:43 +080073 when(inviteService.getInvitesByUsername(""))
74 .thenReturn(expectedResponse);
Sure2338188c5d2025-05-28 11:43:06 +080075
21301050e4db6a92025-06-08 23:42:43 +080076 Map<String, Object> actualResponse = invitesController.getUserInfo("");
Sure2338188c5d2025-05-28 11:43:06 +080077
Sure2338188c5d2025-05-28 11:43:06 +080078 assertEquals(expectedResponse, actualResponse);
21301050e4db6a92025-06-08 23:42:43 +080079 assertEquals("用户名不能为空", actualResponse.get("message"));
80 }
81
82 @Test
83 void getUserInfo_ServiceException() {
84 when(inviteService.getInvitesByUsername(anyString()))
85 .thenThrow(new RuntimeException("数据库连接失败"));
86
87 assertThrows(RuntimeException.class, () -> {
88 invitesController.getUserInfo("testuser");
89 });
90 }
91
92 // 边界条件测试
93 @Test
94 void getUserInfo_LongUsername() {
95 String longUsername = "a".repeat(256);
96 Map<String, Object> expectedResponse = new HashMap<>();
97 expectedResponse.put("success", false);
98 expectedResponse.put("message", "用户名过长");
99
100 when(inviteService.getInvitesByUsername(longUsername))
101 .thenReturn(expectedResponse);
102
103 Map<String, Object> actualResponse = invitesController.getUserInfo(longUsername);
104
105 assertEquals(expectedResponse, actualResponse);
106 }
107
108 // 性能测试示例(实际项目中可能需要单独的测试类)
109 @Test
110 void getUserInfo_Performance() {
111 // 模拟快速响应
112 when(inviteService.getInvitesByUsername(anyString()))
113 .thenAnswer(invocation -> {
114 Map<String, Object> response = new HashMap<>();
115 response.put("success", true);
116 return response;
117 });
118
119 long startTime = System.currentTimeMillis();
120 invitesController.getUserInfo("testuser");
121 long duration = System.currentTimeMillis() - startTime;
122
123 assertTrue(duration < 100, "响应时间应小于100毫秒");
Sure2338188c5d2025-05-28 11:43:06 +0800124 }
125}