用户

Change-Id: I33150cf6ffdea3bf582023bf540394075d081af9
diff --git a/src/test/java/com/example/myproject/controller/PostControllerTest.java b/src/test/java/com/example/myproject/controller/PostControllerTest.java
new file mode 100644
index 0000000..21eeddd
--- /dev/null
+++ b/src/test/java/com/example/myproject/controller/PostControllerTest.java
@@ -0,0 +1,206 @@
+package com.example.myproject.controller;
+
+import com.example.myproject.entity.Post;
+import com.example.myproject.service.PostService;
+import com.example.myproject.utils.Result;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.mockito.*;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import static org.mockito.Mockito.*;
+import static org.junit.jupiter.api.Assertions.*;
+
+class PostControllerTest {
+
+    @InjectMocks
+    private PostController postController;
+
+    @Mock
+    private PostService postService;
+
+    @BeforeEach
+    void setup() {
+        MockitoAnnotations.openMocks(this);
+    }
+
+    // 测试创建帖子
+    void createPostTest() {
+        Long userId = 1L;
+        String postContent = "Test Post Content";
+        String title = "Test Post Title";
+        MultipartFile[] imageFiles = new MultipartFile[0];  // Empty array for simplicity
+
+        // 模拟服务层的返回值
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("postNo", 123L);
+        responseMap.put("message", "帖子创建成功");
+
+        when(postService.createPost(userId, postContent, title, imageFiles)).thenReturn(responseMap);
+
+        // 调用控制器的方法
+        Map<String, Object> resultMap = postController.createPost(userId, postContent, title, imageFiles);
+
+        // 手动将 Map<String, Object> 包装到 Result.success()
+        Result<Map<String, Object>> result = Result.success(resultMap, "帖子创建成功");
+
+        // 验证返回的结果
+        assertEquals("200", result.getCode());
+        assertEquals("帖子创建成功", result.getMsg());
+        assertEquals(123L, result.getData().get("postNo"));
+    }
+
+    // 测试编辑帖子
+    @Test
+    void updatePostTest() {
+        Long postId = 1L;
+        Post post = new Post();
+        post.setPostNo(postId);
+        post.setTitle("Updated Title");
+        post.setPostContent("Updated Content");
+
+        // 模拟服务层的行为
+        doNothing().when(postService).updatePost(postId, post);
+
+        // 调用控制器的方法
+        String result = postController.updatePost(postId, post);
+
+        // 验证返回的结果
+        assertEquals("Post updated successfully!", result);
+    }
+
+    // 测试删除帖子
+    @Test
+    void deletePostTest() {
+        Long postId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).deletePost(postId);
+
+        // 调用控制器的方法
+        String result = postController.deletePost(postId);
+
+        // 验证返回的结果
+        assertEquals("Post deleted successfully!", result);
+    }
+
+    // 测试点赞帖子
+    @Test
+    void likePostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).likePost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.likePost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post liked successfully!", result);
+    }
+
+    // 测试取消点赞帖子
+    @Test
+    void unlikePostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).unlikePost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.unlikePost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post unliked successfully!", result);
+    }
+
+    // 测试收藏帖子
+    @Test
+    void collectPostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).collectPost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.collectPost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post collected successfully!", result);
+    }
+
+    // 测试取消收藏帖子
+    @Test
+    void uncollectPostTest() {
+        Long postId = 1L;
+        Long userId = 1L;
+
+        // 模拟服务层的行为
+        doNothing().when(postService).uncollectPost(postId, userId);
+
+        // 创建请求体
+        Map<String, Long> requestBody = new HashMap<>();
+        requestBody.put("user_id", userId);
+
+        // 调用控制器的方法
+        String result = postController.uncollectPost(postId, requestBody);
+
+        // 验证返回的结果
+        assertEquals("Post uncollected successfully!", result);
+    }
+
+    // 测试获取所有帖子
+    @Test
+    void getAllPostsTest() {
+        // 模拟服务层的行为
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("total", 5);
+        responseMap.put("posts", new ArrayList<>());
+
+        when(postService.getAllPosts()).thenReturn(responseMap);
+
+        // 调用控制器的方法
+        Map<String, Object> result = postController.getAllPosts();
+
+        // 验证返回的结果
+        assertEquals(5, result.get("total"));
+    }
+
+    // 测试根据帖子ID获取帖子
+    @Test
+    void getPostByIdTest() {
+        Long postId = 1L;
+        Map<String, Object> responseMap = new HashMap<>();
+        responseMap.put("postNo", 123L);
+        responseMap.put("message", "Post details");
+
+        // 模拟服务层的行为
+        when(postService.getPostById(postId)).thenReturn(responseMap);
+
+        // 调用控制器的方法
+        Map<String, Object> result = postController.getPostById(postId);
+
+        // 验证返回的结果
+        assertEquals("Post details", result.get("message"));
+        assertEquals(123L, result.get("postNo"));
+    }
+}