用户

Change-Id: I33150cf6ffdea3bf582023bf540394075d081af9
diff --git a/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java b/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java
new file mode 100644
index 0000000..29bf47f
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/UserFollowControllerTest.java
@@ -0,0 +1,132 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.controller.UserFollowController;
+import com.example.myproject.service.UserFollowService;
+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.List;
+
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class UserFollowControllerTest {
+
+    @InjectMocks
+    private UserFollowController userFollowController;
+
+    @Mock
+    private UserFollowService userFollowService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试用户关注接口
+    @Test
+    void testFollow() {
+        Long followerId = 1L;
+        Long followedId = 2L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "message", "关注成功"
+        );
+
+        // 模拟 userFollowService.follow() 返回
+        when(userFollowService.follow(followerId, followedId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Long> request = Map.of("follower_id", followerId);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.follow(followedId, request);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals("关注成功", responseEntity.getBody().get("message"));
+    }
+
+    // 测试取消关注接口
+    @Test
+    void testUnfollow() {
+        Long followerId = 1L;
+        Long followedId = 2L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "message", "取消关注成功"
+        );
+
+        // 模拟 userFollowService.unfollow() 返回
+        when(userFollowService.unfollow(followerId, followedId)).thenReturn(mockResponse);
+
+        // 创建请求体
+        Map<String, Long> request = Map.of("follower_id", followerId);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.unfollow(followedId, request);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals("取消关注成功", responseEntity.getBody().get("message"));
+    }
+
+    // 测试获取某个用户的粉丝列表接口
+    @Test
+    void testGetFollowers() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "total", 2,
+                "followers", List.of(
+                        Map.of("user_id", 2L, "username", "user2", "avatar_url", "url2"),
+                        Map.of("user_id", 3L, "username", "user3", "avatar_url", "url3")
+                )
+        );
+
+        // 模拟 userFollowService.getFollowers() 返回
+        when(userFollowService.getFollowers(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.getFollowers(userId);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals(2, responseEntity.getBody().get("total"));
+        assertEquals(2, ((List<?>) responseEntity.getBody().get("followers")).size());
+    }
+
+    // 测试获取某个用户的关注列表接口
+    @Test
+    void testGetFollowing() {
+        Long userId = 1L;
+        Map<String, Object> mockResponse = Map.of(
+                "status", "success",
+                "total", 2,
+                "following", List.of(
+                        Map.of("user_id", 2L, "username", "user2", "avatar_url", "url2"),
+                        Map.of("user_id", 3L, "username", "user3", "avatar_url", "url3")
+                )
+        );
+
+        // 模拟 userFollowService.getFollowing() 返回
+        when(userFollowService.getFollowing(userId)).thenReturn(mockResponse);
+
+        // 调用控制器方法
+        ResponseEntity<Map<String, Object>> responseEntity = userFollowController.getFollowing(userId);
+
+        // 验证返回的状态码和内容
+        assertEquals(200, responseEntity.getStatusCodeValue());
+        assertEquals("success", responseEntity.getBody().get("status"));
+        assertEquals(2, responseEntity.getBody().get("total"));
+        assertEquals(2, ((List<?>) responseEntity.getBody().get("following")).size());
+    }
+}