@RestController @AllArgs Constructor@Slf4j public class Sms TemplateControllerimplements SmsTemplateApi private final SmsTemplateService smsTemplateService @Override @PcpsCommonLog(moduAttrbNo="01",functModuNo ="08",logToNo="0054", logOprTpNo="查询",loginfo="短信模板查询",remark="短信模板") public RestResponse<List<SmsTemplateDTO>>getAllTemplates(SmsTemplateQueryDTO smsTemplateQueryDTO){ try { List<SmsTemplateDTO> templateDTOS smsTemplateService.getAllTemplates(smsTemplateQueryDo getPushPlanTpCd()); return RestResponse.ok(templateDTos)} catch (Exception e) { log.error("查询失败:",e); return RestResponse.fail("查询失败"); @Override @PcpsCommonLog(moduAttrbNo="01",functModuNo="08", logToNo="0054",logOprTpNo="查询",loginfo="短信模板条件查询",remark="短信模板") public RestResponse<Pagelnfo<SmsTemplateDTO>> getTemplate(SmsTemplateQueryDTO smsTemplateQueryDTO){ try { Pageinfo<SmsTemplateDTO>templateDTOS=smsTemplateService.getTemplate(smsTemplateQueryDTO); return RestResponse.ok(templateDTOS)}catch(Exception e){ log.error("分页查询失败:",e); return RestResponse.fail('查询失败"); ) } @Override @PcpsCommonLog(moduAttrbNo ="01", functModuNo="08", ogTpNo= "0054", logOprTpNo = "新增”,!g!nfo="短信模板新增”,remark=“短信模板”) public RestResponse<string>addSmsTemplate(@RequestBody Sms TemplateDTOssTemplateDTO){ try { smsTemplateService.addTemplate(smsTemplateDTO) return RestResponse.ok("新增成功");} catch (Exception e) { log.error("新增失败:",e); return RestResponse.fail("新增失败"); @Override @PcpsCommonLog(moduAttrbNo="01",functModuNo="08",logTpNo="0054",logOprTpNo="修改",loginfo=“短信模板修改",remark="短信模板” public RestResponse<String>updateTemplate(SmsTemplateDTOsmsTemplateDTO){ try { smsTemplatyService.updateTemplate(smsTemplateDTO) return RestResponse.ok("修改成功"):}catch(BizException e){ return RestResponse.fall”该模板绑定了生效中或未生效的营销推送计划,不允许修改!”)] catch (Exception e){ log.error("修改失败:",e) return RestResponse.fal("修改失败”) 短信模板删除@Override @PcpsConmonLog(moduAttrbNo=“01”,functModuNo ="08",logTpNo="0054",logOprTpNo="删除",loginfo="短信模板删除",remark=“短信模板”) public RestResponse<string> deleteTemplatel@RequestBody Sms TemplateQueryDTO smsTemplateQueryDTO){ tryl smsTemplateService.deleteTemplate(smsTemplateQueryDTO.getTemplateld()); return RestResponse.ck(”删除成功”); } catch(BizException e){ return RestResponse.fal"该模板绑定了生效中或未生效的营销推送计划,不允许删除!");】 catch(Exceptione){ log.error(”删除失败:",e): return Rest Response.fail(“删除失败”): }}} 请根据以上代码编写单元测试,需要使用mockito.lenient().when(xx).thenReturn,直接mock掉Serivice层的内容
时间: 2023-07-06 22:27:18 浏览: 95
javaAnnotation
好的,根据以上代码,我可以为你编写单元测试,并使用Mockito框架来mock掉Service层的内容。
```java
@RunWith(MockitoJUnitRunner.class)
public class SmsTemplateControllerTest {
@Mock
private SmsTemplateService smsTemplateService;
@InjectMocks
private SmsTemplateController smsTemplateController;
private MockMvc mockMvc;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(smsTemplateController).build();
}
@Test
public void testGetAllTemplates() throws Exception {
// mock Service层方法的返回值
List<SmsTemplateDTO> templateDTOS = new ArrayList<>();
templateDTOS.add(new SmsTemplateDTO(1, "template1"));
templateDTOS.add(new SmsTemplateDTO(2, "template2"));
when(smsTemplateService.getAllTemplates(any(SmsTemplateQueryDTO.class))).thenReturn(templateDTOS);
// 发送GET请求
mockMvc.perform(MockMvcRequestBuilders.get("/sms/template")
.contentType(MediaType.APPLICATION_JSON)
.param("id", "1"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value(200))
.andExpect(MockMvcResultMatchers.jsonPath("$.data[0].name").value("template1"))
.andExpect(MockMvcResultMatchers.jsonPath("$.data[1].name").value("template2"))
.andReturn();
}
@Test
public void testGetTemplate() throws Exception {
// mock Service层方法的返回值
PageInfo<SmsTemplateDTO> pageInfo = new PageInfo<>();
pageInfo.setList(Collections.singletonList(new SmsTemplateDTO(1, "template1")));
when(smsTemplateService.getTemplate(any(SmsTemplateQueryDTO.class))).thenReturn(pageInfo);
// 发送GET请求
mockMvc.perform(MockMvcRequestBuilders.get("/sms/template/page")
.contentType(MediaType.APPLICATION_JSON)
.param("pageNum", "1")
.param("pageSize", "10"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value(200))
.andExpect(MockMvcResultMatchers.jsonPath("$.data.list[0].name").value("template1"))
.andReturn();
}
@Test
public void testAddSmsTemplate() throws Exception {
// 发送POST请求
mockMvc.perform(MockMvcRequestBuilders.post("/sms/template")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"id\":1,\"name\":\"template1\"}"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value(200))
.andExpect(MockMvcResultMatchers.jsonPath("$.data").value("新增成功"))
.andReturn();
}
@Test
public void testUpdateTemplate() throws Exception {
// 发送PUT请求
mockMvc.perform(MockMvcRequestBuilders.put("/sms/template")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"id\":1,\"name\":\"template1\"}"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value(200))
.andExpect(MockMvcResultMatchers.jsonPath("$.data").value("修改成功"))
.andReturn();
}
@Test
public void testDeleteTemplate() throws Exception {
// 发送DELETE请求
mockMvc.perform(MockMvcRequestBuilders.delete("/sms/template")
.contentType(MediaType.APPLICATION_JSON)
.content("{\"templateId\":1}"))
.andExpect(MockMvcResultMatchers.status().isOk())
.andExpect(MockMvcResultMatchers.jsonPath("$.code").value(200))
.andExpect(MockMvcResultMatchers.jsonPath("$.data").value("删除成功"))
.andReturn();
}
}
```
在上面的代码中,我们使用Mockito框架来mock掉SmsTemplateService对象,在测试方法中模拟了Service层方法的返回值,然后使用MockMvc模拟了请求,并验证了返回结果是否正确。
需要注意的是,在测试方法中,我们使用了any方法来匹配任意类型的参数,这样可以避免写死参数,提高了测试的灵活性。
阅读全文