| package com.pt5.pthouduan.ControllerTest; |
| import com.pt5.pthouduan.controller.UserController; |
| import com.pt5.pthouduan.entity.User; |
| import com.pt5.pthouduan.service.UserService; |
| import org.junit.jupiter.api.BeforeEach; |
| import org.junit.jupiter.api.Test; |
| import org.mockito.InjectMocks; |
| import org.mockito.Mock; |
| import org.mockito.MockitoAnnotations; |
| import org.springframework.http.ResponseEntity; |
| |
| import java.util.HashMap; |
| import java.util.Map; |
| |
| import static org.junit.jupiter.api.Assertions.*; |
| import static org.mockito.ArgumentMatchers.any; |
| import static org.mockito.ArgumentMatchers.anyString; |
| import static org.mockito.Mockito.*; |
| |
| class UserControllerTest { |
| |
| @Mock |
| private UserService userService; |
| |
| @InjectMocks |
| private UserController userController; |
| |
| @BeforeEach |
| void setUp() { |
| MockitoAnnotations.openMocks(this); |
| } |
| |
| // 测试注册功能 |
| @Test |
| void register_ShouldReturnSuccess() { |
| User user = new User(0L,"1"); |
| user.setUsername("testUser"); |
| Map<String, Object> expected = new HashMap<>(); |
| expected.put("status", "success"); |
| |
| when(userService.register(any(User.class), anyString(), anyString())) |
| .thenReturn(expected); |
| |
| Map<String, Object> result = userController.register(user, "INVITE123", "EMAIL456"); |
| |
| assertEquals(expected, result); |
| verify(userService, times(1)).register(any(), anyString(), anyString()); |
| } |
| |
| // 测试登录功能 |
| @Test |
| void login_ShouldReturnToken() { |
| Map<String, Object> expected = new HashMap<>(); |
| expected.put("token", "mockToken123"); |
| |
| when(userService.login("testUser", "password123")) |
| .thenReturn(expected); |
| |
| Map<String, Object> result = userController.login("testUser", "password123"); |
| |
| assertEquals(expected, result); |
| assertNotNull(result.get("token")); |
| } |
| |
| // 测试获取用户信息 |
| @Test |
| void getUserInfo_ShouldReturnUserData() { |
| Map<String, Object> expected = new HashMap<>(); |
| expected.put("username", "testUser"); |
| expected.put("email", "test@example.com"); |
| |
| when(userService.UserInfo("testUser")) |
| .thenReturn(expected); |
| |
| Map<String, Object> result = userController.getuser("testUser"); |
| |
| assertEquals("testUser", result.get("username")); |
| assertEquals("test@example.com", result.get("email")); |
| } |
| |
| // 测试修改密码 |
| @Test |
| void changePassword_ShouldHandleSuccess() { |
| Map<String, Object> expected = new HashMap<>(); |
| expected.put("message", "Password updated"); |
| |
| when(userService.changePassword("testUser", "oldPass", "newPass")) |
| .thenReturn(expected); |
| |
| Map<String, Object> result = userController.changePassword( |
| "testUser", "oldPass", "newPass"); |
| |
| assertEquals("Password updated", result.get("message")); |
| } |
| |
| // 测试异常情况 |
| @Test |
| void login_ShouldHandleFailure() { |
| when(userService.login("wrongUser", "wrongPass")) |
| .thenThrow(new RuntimeException("Invalid credentials")); |
| |
| assertThrows(RuntimeException.class, () -> { |
| userController.login("wrongUser", "wrongPass"); |
| }); |
| } |
| |
| // 测试空参数情况 |
| @Test |
| void getUserInfo_ShouldHandleNullUsername() { |
| when(userService.UserInfo(null)) |
| .thenReturn(Map.of("error", "Username required")); |
| |
| Map<String, Object> result = userController.getuser(null); |
| |
| assertEquals("Username required", result.get("error")); |
| } |
| |
| // 测试创建用户 |
| @Test |
| void createUser_ShouldReturnUserId() { |
| User newUser = new User(0L,"1"); |
| newUser.setUsername("newUser"); |
| Map<String, Object> expected = Map.of("userId", 123); |
| |
| when(userService.CreateUser(any(User.class))) |
| .thenReturn(expected); |
| |
| Map<String, Object> result = userController.creatUser(newUser); |
| |
| assertEquals(123, result.get("userId")); |
| } |
| } |