spring-boot - 当返回类型为响应实体时测试控制器类 post 方法
问题描述
下面的代码使用 testng 和 mockito 测试一个 post 方法。我在 assertThat(outputInJson).isEqualTo(inputInJson) 行遇到错误。控制器类 post 方法在创建商品时返回 responseEntity 对象。
@Test
public void testCreateOffer() throws Exception {
Offer offer = new Offer("SE", new Date(), 10);
MockHttpServletRequest request = new MockHttpServletRequest();
RequestContextHolder.setRequestAttributes(new ServletRequestAttributes(request));
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{jobTitle}")
.buildAndExpand(offer.getJobTitle()).toUri();
String inputInJson = this.mapToJson(ResponseEntity.created(location).build());
Mockito.when(offerService.createOffer(Mockito.any(Offer.class))).thenReturn(offer);
RequestBuilder requestBuilder = MockMvcRequestBuilders.post("/offers").accept(MediaType.APPLICATION_JSON)
.content(inputInJson).contentType(MediaType.APPLICATION_JSON);
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
MockHttpServletResponse response = result.getResponse();
String outputInJson = response.getContentAsString();
assertThat(outputInJson).isEqualTo(inputInJson);
assertThat(response.getStatus()).isEqualTo(HttpStatus.CREATED.value());
}
private String mapToJson(Object object) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(object);
}
和控制器类 post 方法
@PostMapping("/offers")
public ResponseEntity<Object> createOffer(@Valid @RequestBody Offer offer) {
Offer uoffer = offerService.createOffer(offer);
URI location = ServletUriComponentsBuilder.fromCurrentRequest().path("/{jobTitle}")
.buildAndExpand(uoffer.getJobTitle()).toUri();
return ResponseEntity.created(location).build();
}
解决方案
推荐阅读
- mysql - mysql触发信息从一对多关系插入和更新触发器
- javascript - 根据属性值从对象数组中获取值
- actionscript-3 - AS3计时器在游戏中工作
- python - 通过字段连接两个表时,Python不返回数据
- java - 如何正确返回基于用户 ID 显示数据的数组列表?
- python - TypeError:“str”对象不能解释为整数。创建一个新的 .csv 文件。键错误:'Id'
- sql - Oracle nvl 功能未按预期工作
- javascript - 如何等待函数执行直到订阅完成?
- java - 使用 Apache POI 获取行数
- python - WTForms 复选框字段未填充