当前位置: 代码迷 >> 综合 >> 微服务如何实现单元测试
  详细解决方案

微服务如何实现单元测试

热度:85   发布时间:2024-03-06 18:44:56.0

1、单元测试示例

@RunWith(SpringRunner.class)
@SpringBootTest(classes = ConsultationApplication.class)
public class FollowUpPlanControllerTest {@Resourceprivate FollowUpPlanController planController;@Resourceprivate FollowUpOrderServiceImpl followUpOrderService;private MockMvc planMvc;@MockBeanprivate BaseServiceClient baseServiceClient;private static final String token = "7d4b94180c42492895758265ebc22d46";@Beforepublic void setUp() {planMvc = MockMvcBuilders.standaloneSetup(planController).build();SysUser sysUser = new SysUser();sysUser.setId(1L);sysUser.setUserName("test");sysUser.setOrgId(1L);sysUser.setOrgName("测试机构");doReturn(new CommonResult<>(sysUser)).when(baseServiceClient).getUserByToken(anyString(), anyString());}//添加随访计划(验证单次随访)@Testpublic void saveFollowUpPlan(){RequestBuilder request;request = post("/api/followUpPlan/saveOrUpdateFollowUpPlan").header("BASE_PC_TOKEN_HEADER",token).param("businessId", "1314497970783260672").param("patientName", "王金中").param("classificationId", "1307962320344977408").param("classificationName", "高血压").param("chronicDiseasesLevel", "2").param("followUpType", "1").param("visitWayKey", "FOLLOW_PHONE").param("visitWayValue", "电话").param("followUpDate", "2020-10-25 14:14:25").param("followUpFrequency", "1").param("frequencyUnit", "1");try {ResultActions resultActions = planMvc.perform(request).andExpect(status().isOk()).andExpect(content().contentTypeCompatibleWith(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers.jsonPath("$.status").value("1"));MockHttpServletResponse response = resultActions.andReturn().getResponse();response.setCharacterEncoding("UTF-8");resultActions.andDo(print());// 判断是否生成随访工单String res = response.getContentAsString();JSONObject jsonObject = JSON.parseObject(res);            ;Long id = Long.valueOf(jsonObject.getString("data"));Map<String, Object> map = new HashMap<>();map.put("businessId", id);List<FollowUpOrder> list  = followUpOrderService.getList(map);Assert.assertNotNull(list);Assert.assertEquals(1, list.size());} catch (Exception e) {Assert.fail(e.getMessage());e.printStackTrace();}}
}

2、模拟远程服务

使用@MockBean注解实现模拟远程服务,并模拟返回数据

@MockBeanprivate BaseServiceClient baseServiceClient;
@Beforepublic void setUp() {planMvc = MockMvcBuilders.standaloneSetup(planController).build();SysUser sysUser = new SysUser();sysUser.setId(1L);sysUser.setUserName("test");sysUser.setOrgId(1L);sysUser.setOrgName("测试机构");doReturn(new CommonResult<>(sysUser)).when(baseServiceClient).getUserByToken(anyString(), anyString());}