package com.gs.xky.controller; import com.fasterxml.jackson.databind.ObjectMapper; import com.gs.xky.dto.NumbericalDto; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MockMvc; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.Mockito.when; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath; import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; /** * DingtalkController测试类 * * @author 28567 * @description 测试钉钉消息发送接口 * @createDate 2025-01-27 */ @WebMvcTest(DingtalkController.class) public class DingtalkControllerTest { @Autowired private MockMvc mockMvc; @MockBean private com.gs.xky.service.DingtalkInfoService dingtalkInfoService; @Autowired private ObjectMapper objectMapper; @Test public void testSendMessage_Success() throws Exception { // 准备测试数据 NumbericalDto requestDto = new NumbericalDto(); requestDto.setReleaseNo("IQC202501270001"); // Mock服务层返回成功 when(dingtalkInfoService.sendMessage(anyString())).thenReturn(true); // 执行测试 mockMvc.perform(post("/api/dingtalk/sendMessage") .contentType(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(requestDto))) .andExpect(status().isOk()) .andExpect(jsonPath("$.code").value(200)) .andExpect(jsonPath("$.successful").value(0)) .andExpect(jsonPath("$.data").value("接收成功")); } @Test public void testSendMessage_Failure() throws Exception { // 准备测试数据 NumbericalDto requestDto = new NumbericalDto(); requestDto.setReleaseNo("IQC202501270001"); // Mock服务层返回失败 when(dingtalkInfoService.sendMessage(anyString())).thenReturn(false); // 执行测试 mockMvc.perform(post("/api/dingtalk/sendMessage") .contentType(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(requestDto))) .andExpect(status().isOk()) .andExpect(jsonPath("$.code").value(500)) .andExpect(jsonPath("$.successful").value(1)) .andExpect(jsonPath("$.data").value("接收失败")); } @Test public void testSendMessage_EmptyReleaseNo() throws Exception { // 准备测试数据 - 空的检验单号 NumbericalDto requestDto = new NumbericalDto(); requestDto.setReleaseNo(""); // 执行测试 mockMvc.perform(post("/api/dingtalk/sendMessage") .contentType(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(requestDto))) .andExpect(status().isOk()) .andExpect(jsonPath("$.code").value(500)) .andExpect(jsonPath("$.message").value("检验单号不能为空")) .andExpect(jsonPath("$.successful").value(1)) .andExpect(jsonPath("$.data").value("接收失败")); } @Test public void testSendMessage_NullReleaseNo() throws Exception { // 准备测试数据 - null检验单号 NumbericalDto requestDto = new NumbericalDto(); requestDto.setReleaseNo(null); // 执行测试 mockMvc.perform(post("/api/dingtalk/sendMessage") .contentType(MediaType.APPLICATION_JSON) .content(objectMapper.writeValueAsString(requestDto))) .andExpect(status().isOk()) .andExpect(jsonPath("$.code").value(500)) .andExpect(jsonPath("$.message").value("检验单号不能为空")) .andExpect(jsonPath("$.successful").value(1)) .andExpect(jsonPath("$.data").value("接收失败")); } }