blob: 7fa6ff3abbc15b8b45d98a2d749c60f20090c4ea [file] [log] [blame]
223011381c359102025-06-03 15:19:59 +08001package com.example.myproject.controller;
2
3import com.example.myproject.entity.SeedComment;
4import com.example.myproject.service.SeedCommentService;
5import org.junit.jupiter.api.BeforeEach;
6import org.junit.jupiter.api.Test;
7import org.mockito.InjectMocks;
8import org.mockito.Mock;
9import org.mockito.MockitoAnnotations;
10import org.springframework.http.ResponseEntity;
11
12import java.util.HashMap;
13import java.util.Map;
14
15import static org.mockito.Mockito.*;
16import static org.junit.jupiter.api.Assertions.*;
17
18public class SeedCommentControllerTest {
19
20 @InjectMocks
21 private SeedCommentController seedCommentController;
22
23 @Mock
24 private SeedCommentService seedCommentService;
25
26 @BeforeEach
27 public void setUp() {
28 MockitoAnnotations.openMocks(this); // 初始化 Mockito 注解
29 }
30
31 // 测试发布评论
32 @Test
33 public void testPublishComment() {
34 int seedId = 1;
35 SeedComment seedComment = new SeedComment();
36 seedComment.setContent("Test comment content");
37 seedComment.setUserId(1);
38 seedComment.setComCommentId(0); // 顶级评论
39
40 // 模拟服务层的返回值
41 String expectedResponse = "{ \"status\": \"success\", \"message\": \"评论发布成功\" }";
42 when(seedCommentService.publishComment(seedId, seedComment)).thenReturn(expectedResponse);
43
44 // 调用控制器的方法
45 String result = seedCommentController.publishComment(seedId, seedComment);
46
47 // 验证结果
48 assertEquals(expectedResponse, result);
49 }
50
51 // 测试获取种子下所有评论
52 @Test
53 public void testGetAllComments() {
54 int seedId = 1;
55
56 // 模拟服务层的返回值
57 Map<String, Object> expectedResponse = new HashMap<>();
58 expectedResponse.put("status", "success");
59 expectedResponse.put("comments", "dummyComments"); // 示例返回数据
60
61 when(seedCommentService.getAllCommentsForSeed(seedId)).thenReturn(expectedResponse);
62
63 // 调用控制器的方法
64 Map<String, Object> result = seedCommentController.getAllComments(seedId);
65
66 // 验证结果
67 assertEquals(expectedResponse, result);
68 }
69
70 // 测试点赞切换操作
71 @Test
72 public void testToggleLike() {
73 Long commentId = 1L;
74 Map<String, Object> request = new HashMap<>();
75 request.put("user_id", 1L);
76
77 // 模拟服务层的返回值
78 Map<String, Object> expectedResponse = new HashMap<>();
79 expectedResponse.put("status", "success");
80 expectedResponse.put("message", "操作成功");
81 expectedResponse.put("liked", "true");
82
83 when(seedCommentService.toggleLike(commentId, 1L)).thenReturn(expectedResponse);
84
85 // 调用控制器的方法
86 Map<String, Object> result = seedCommentController.toggleLike(commentId, request);
87
88 // 验证结果
89 assertEquals(expectedResponse, result);
90 }
91}