| package com.example.myproject.controller; |
| |
| import com.example.myproject.entity.SeedComment; |
| import com.example.myproject.service.SeedCommentService; |
| 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.mockito.Mockito.*; |
| import static org.junit.jupiter.api.Assertions.*; |
| |
| public class SeedCommentControllerTest { |
| |
| @InjectMocks |
| private SeedCommentController seedCommentController; |
| |
| @Mock |
| private SeedCommentService seedCommentService; |
| |
| @BeforeEach |
| public void setUp() { |
| MockitoAnnotations.openMocks(this); // 初始化 Mockito 注解 |
| } |
| |
| // 测试发布评论 |
| @Test |
| public void testPublishComment() { |
| int seedId = 1; |
| SeedComment seedComment = new SeedComment(); |
| seedComment.setContent("Test comment content"); |
| seedComment.setUserId(1); |
| seedComment.setComCommentId(0); // 顶级评论 |
| |
| // 模拟服务层的返回值 |
| String expectedResponse = "{ \"status\": \"success\", \"message\": \"评论发布成功\" }"; |
| when(seedCommentService.publishComment(seedId, seedComment)).thenReturn(expectedResponse); |
| |
| // 调用控制器的方法 |
| String result = seedCommentController.publishComment(seedId, seedComment); |
| |
| // 验证结果 |
| assertEquals(expectedResponse, result); |
| } |
| |
| // 测试获取种子下所有评论 |
| @Test |
| public void testGetAllComments() { |
| int seedId = 1; |
| |
| // 模拟服务层的返回值 |
| Map<String, Object> expectedResponse = new HashMap<>(); |
| expectedResponse.put("status", "success"); |
| expectedResponse.put("comments", "dummyComments"); // 示例返回数据 |
| |
| when(seedCommentService.getAllCommentsForSeed(seedId)).thenReturn(expectedResponse); |
| |
| // 调用控制器的方法 |
| Map<String, Object> result = seedCommentController.getAllComments(seedId); |
| |
| // 验证结果 |
| assertEquals(expectedResponse, result); |
| } |
| |
| // 测试点赞切换操作 |
| @Test |
| public void testToggleLike() { |
| Long commentId = 1L; |
| Map<String, Object> request = new HashMap<>(); |
| request.put("user_id", 1L); |
| |
| // 模拟服务层的返回值 |
| Map<String, Object> expectedResponse = new HashMap<>(); |
| expectedResponse.put("status", "success"); |
| expectedResponse.put("message", "操作成功"); |
| expectedResponse.put("liked", "true"); |
| |
| when(seedCommentService.toggleLike(commentId, 1L)).thenReturn(expectedResponse); |
| |
| // 调用控制器的方法 |
| Map<String, Object> result = seedCommentController.toggleLike(commentId, request); |
| |
| // 验证结果 |
| assertEquals(expectedResponse, result); |
| } |
| } |