blob: 00c8354fbd0444624b86ed281e99d896c29239d0 [file] [log] [blame]
Sure2338188c5d2025-05-28 11:43:06 +08001package com.pt5.pthouduan.ControllerTest;
2
3import com.pt5.pthouduan.controller.UserController;
4import com.pt5.pthouduan.entity.User;
5import com.pt5.pthouduan.service.UserService;
6import org.junit.jupiter.api.BeforeEach;
7import org.junit.jupiter.api.Test;
8import org.mockito.InjectMocks;
9import org.mockito.Mock;
10import org.mockito.MockitoAnnotations;
11import org.springframework.http.ResponseEntity;
12
13import java.util.HashMap;
14import java.util.Map;
15
16import static org.junit.jupiter.api.Assertions.*;
17import static org.mockito.ArgumentMatchers.*;
18import static org.mockito.Mockito.*;
19
20class UserControllerTest {
21
22 @Mock
23 private UserService userService;
24
25 @InjectMocks
26 private UserController userController;
27
28 @BeforeEach
29 void setUp() {
30 MockitoAnnotations.openMocks(this);
31 }
32
33 // 注册测试
34 @Test
35 void register_ShouldCallServiceWithCorrectParameters() {
36 // 准备测试数据
37 User testUser = new User(1L,"");
38 testUser.setUsername("testUser");
39 String testCode = "123456";
40 Map<String, Object> expectedResponse = new HashMap<>();
41 expectedResponse.put("success", true);
42 expectedResponse.put("message", "注册成功");
43
44 // 模拟服务行为
45 when(userService.register(any(User.class), anyString())).thenReturn(expectedResponse);
46
47 // 执行测试
48 Map<String, Object> actualResponse = userController.register(testUser, testCode);
49
50 // 验证行为
51 verify(userService, times(1)).register(testUser, testCode);
52
53 // 验证结果
54 assertEquals(expectedResponse, actualResponse);
55 }
56
57 // 登录测试
58 @Test
59 void login_ShouldReturnSuccessWhenCredentialsAreValid() {
60 // 准备测试数据
61 String username = "testUser";
62 String password = "correctPassword";
63 Map<String, Object> expectedResponse = new HashMap<>();
64 expectedResponse.put("success", true);
65 expectedResponse.put("token", "sampleToken");
66
67 // 模拟服务行为
68 when(userService.login(eq(username), eq(password))).thenReturn(expectedResponse);
69
70 // 执行测试
71 Map<String, Object> actualResponse = userController.login(username, password);
72
73 // 验证行为
74 verify(userService, times(1)).login(username, password);
75
76 // 验证结果
77 assertEquals(expectedResponse, actualResponse);
78 assertTrue((Boolean) actualResponse.get("success"));
79 assertNotNull(actualResponse.get("token"));
80 }
81
82 // 计算等级测试
83 @Test
84 void calgrade_ShouldReturnUserGrade() {
85 // 准备测试数据
86 String username = "testUser";
87 Map<String, Object> expectedResponse = new HashMap<>();
88 expectedResponse.put("grade", 5);
89 expectedResponse.put("exp", 1200);
90
91 // 模拟服务行为
92 when(userService.CalGrade(eq(username))).thenReturn(expectedResponse);
93
94 // 执行测试
95 Map<String, Object> actualResponse = userController.calgrade(username);
96
97 // 验证行为
98 verify(userService, times(1)).CalGrade(username);
99
100 // 验证结果
101 assertEquals(5, actualResponse.get("grade"));
102 assertEquals(1200, actualResponse.get("exp"));
103 }
104
105 // 修改性别测试
106 @Test
107 void changesex_ShouldUpdateUserSex() {
108 // 准备测试数据
109 String username = "testUser";
110 String newSex = "male";
111 Map<String, Object> expectedResponse = new HashMap<>();
112 expectedResponse.put("success", true);
113 expectedResponse.put("message", "性别更新成功");
114
115 // 模拟服务行为
116 when(userService.changesex(eq(username), eq(newSex))).thenReturn(expectedResponse);
117
118 // 执行测试
119 Map<String, Object> actualResponse = userController.changsex(username, newSex);
120
121 // 验证行为
122 verify(userService, times(1)).changesex(username, newSex);
123
124 // 验证结果
125 assertTrue((Boolean) actualResponse.get("success"));
126 assertEquals("性别更新成功", actualResponse.get("message"));
127 }
128
129 // 修改头像测试
130 @Test
131 void changeimage_ShouldUpdateUserImage() {
132 // 准备测试数据
133 String username = "testUser";
134 String newImage = "newImageUrl";
135 Map<String, Object> expectedResponse = new HashMap<>();
136 expectedResponse.put("success", true);
137 expectedResponse.put("message", "头像更新成功");
138
139 // 模拟服务行为
140 when(userService.changeImage(eq(username), eq(newImage))).thenReturn(expectedResponse);
141
142 // 执行测试
143 Map<String, Object> actualResponse = userController.changeimage(username, newImage);
144
145 // 验证行为
146 verify(userService, times(1)).changeImage(username, newImage);
147
148 // 验证结果
149 assertTrue((Boolean) actualResponse.get("success"));
150 assertEquals("头像更新成功", actualResponse.get("message"));
151 }
152
153 // 修改密码测试
154 @Test
155 void changePassword_ShouldReturnSuccessWhenOldPasswordIsCorrect() {
156 // 准备测试数据
157 String username = "testUser";
158 String oldPassword = "correctOldPassword";
159 String newPassword = "newSecurePassword";
160 Map<String, Object> expectedResponse = new HashMap<>();
161 expectedResponse.put("success", true);
162 expectedResponse.put("message", "密码修改成功");
163
164 // 模拟服务行为
165 when(userService.changePassword(eq(username), eq(oldPassword), eq(newPassword)))
166 .thenReturn(expectedResponse);
167
168 // 执行测试
169 Map<String, Object> actualResponse = userController.changePassword(username, oldPassword, newPassword);
170
171 // 验证行为
172 verify(userService, times(1)).changePassword(username, oldPassword, newPassword);
173
174 // 验证结果
175 assertTrue((Boolean) actualResponse.get("success"));
176 assertEquals("密码修改成功", actualResponse.get("message"));
177 }
178
179 // 获取用户信息测试
180 @Test
181 void getUserInfo_ShouldReturnUserInfo() {
182 // 准备测试数据
183 String username = "testUser";
184 Map<String, Object> expectedResponse = new HashMap<>();
185 expectedResponse.put("username", username);
186 expectedResponse.put("email", "test@example.com");
187
188 // 模拟服务行为
189 when(userService.login(eq(username), eq(""))).thenReturn(expectedResponse);
190
191 // 执行测试
192 Map<String, Object> actualResponse = userController.getUserInfo(username);
193
194 // 验证行为
195 verify(userService, times(1)).login(username, "");
196
197 // 验证结果
198 assertEquals(username, actualResponse.get("username"));
199 assertEquals("test@example.com", actualResponse.get("email"));
200 }
201
202 // 异常情况测试
203 @Test
204 void login_ShouldReturnFailureWhenCredentialsAreInvalid() {
205 // 准备测试数据
206 String username = "testUser";
207 String wrongPassword = "wrongPassword";
208 Map<String, Object> expectedResponse = new HashMap<>();
209 expectedResponse.put("success", false);
210 expectedResponse.put("message", "用户名或密码错误");
211
212 // 模拟服务行为
213 when(userService.login(eq(username), eq(wrongPassword))).thenReturn(expectedResponse);
214
215 // 执行测试
216 Map<String, Object> actualResponse = userController.login(username, wrongPassword);
217
218 // 验证结果
219 assertFalse((Boolean) actualResponse.get("success"));
220 assertEquals("用户名或密码错误", actualResponse.get("message"));
221 }
222}