Skip to content
Snippets Groups Projects
Commit a6e9431f authored by Yan0305's avatar Yan0305
Browse files

tests component

parent 1c5dc351
No related branches found
No related tags found
No related merge requests found
package com.cardiff.sytest;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.mockito.Mockito.*;
import com.cardiff.client_project.HealthCareApplication;
import com.cardiff.client_project.controller.nurse.NurseController;
import com.cardiff.client_project.pojo.entity.Nurse;
import com.cardiff.client_project.service.NurseService;
import com.cardiff.client_project.utils.Result;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.InjectMocks;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import java.util.Arrays;
import java.util.List;
/**
* 护士控制器组件测试类
* 使用MockMvc模拟HTTP请求,测试NurseController的各个接口
*/
@ExtendWith(MockitoExtension.class)
@SpringBootTest(classes = HealthCareApplication.class)
public class ComponentTests {
@Mock
private NurseService nurseService; // 模拟护士服务层
@InjectMocks
private NurseController nurseController; // 注入被测试的控制器
private MockMvc mockMvc; // 用于模拟HTTP请求
private ObjectMapper objectMapper; // 用于对象与JSON转换
// 测试前的初始化工作
@BeforeEach
public void initTestEnvironment() {
// 构建MockMvc实例
mockMvc = MockMvcBuilders.standaloneSetup(nurseController).build();
// 初始化JSON转换工具
objectMapper = new ObjectMapper();
}
// 测试查询所有护士信息接口
@Test
public void shouldReturnSuccessWhenSelectAllNurses() throws Exception {
int testHospitalId = 1; // 测试用的医院ID
// 模拟服务层返回成功结果
Result expectedResult = Result.success("查询成功");
when(nurseService.selectAllNurse(testHospitalId)).thenReturn(expectedResult);
// 执行HTTP请求并验证结果
mockMvc.perform(post("/nurse/selectAll")
.param("hospitalId", String.valueOf(testHospitalId)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.msg").value("查询成功"));
}
// 测试条件查询护士信息接口
@Test
public void shouldReturnNursesWhenSearchByConditions() throws Exception { // 修改了方法名
// 创建测试数据
Nurse testNurse = new Nurse();
testNurse.setName("张护士");
testNurse.setStatus(1);
// 模拟服务层返回成功结果
Result expectedResult = Result.success("条件查询成功");
when(nurseService.selectByItem(any(Nurse.class))).thenReturn(expectedResult);
// 执行HTTP请求并验证结果
mockMvc.perform(post("/nurse/select")
.contentType("application/json")
.content(objectMapper.writeValueAsString(testNurse)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.msg").value("条件查询成功"));
}
//测试更新护士信息接口
@Test
public void shouldReturnSuccessWhenUpdateNurseInfo() throws Exception {
// 创建测试数据
Nurse testNurse = new Nurse();
testNurse.setId(1);
testNurse.setName("李护士(已更新)");
// 模拟服务层返回成功结果
Result expectedResult = Result.success("更新成功");
when(nurseService.update(any(Nurse.class))).thenReturn(expectedResult);
// 执行HTTP请求并验证结果
mockMvc.perform(put("/nurse/update")
.contentType("application/json")
.content(objectMapper.writeValueAsString(testNurse)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.msg").value("更新成功"));
}
// 测试添加护士信息接口
@Test
public void shouldReturnSuccessWhenAddNewNurse() throws Exception {
// 创建测试数据
Nurse newNurse = new Nurse();
newNurse.setName("王护士");
newNurse.setEmail("nurse_wang@example.com");
// 模拟服务层返回成功结果
Result expectedResult = Result.success("添加成功");
when(nurseService.insertNurse(any(Nurse.class))).thenReturn(expectedResult);
// 执行HTTP请求并验证结果
mockMvc.perform(post("/nurse/insert")
.contentType("application/json")
.content(objectMapper.writeValueAsString(newNurse)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.msg").value("添加成功"));
}
// 测试批量删除护士信息接口
@Test
public void shouldReturnSuccessWhenDeleteNurses() throws Exception {
// 创建测试数据
List<Integer> testIds = Arrays.asList(1, 2, 3); // 要删除的护士ID列表
// 模拟服务层返回成功结果
Result expectedResult = Result.success("删除成功");
when(nurseService.deleteById(anyList(), anyString())).thenReturn(expectedResult);
// 执行HTTP请求并验证结果
mockMvc.perform(delete("/nurse/deleteNurseById")
.contentType("application/json")
.content(objectMapper.writeValueAsString(testIds)))
.andExpect(status().isOk())
.andExpect(jsonPath("$.msg").value("删除成功"));
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment