mockMvc .contentType(MediaType.APPLICATION_JSON) 的目的是什么?
What is the purpose of mockMvc .contentType(MediaType.APPLICATION_JSON)?
我不明白这种方法的意义,也找不到任何相关信息。使用它的原因是什么,尤其是对于下面示例中的 void 方法?我试过在我的测试中删除它,看起来一切都是一样的。
测试
@Test
public void deletePatientById_success() throws Exception {
Mockito.when(patientRecordRepository.findById(RECORD_2.getPatientId())).thenReturn(Optional.of(RECORD_2));
mockMvc.perform(MockMvcRequestBuilders
.delete("/patient/2")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
待测控制器
@DeleteMapping(value = "{patientId}")
public void deletePatientById(@PathVariable(value = "patientId") Long patientId) throws NotFoundException {
if (patientRecordRepository.findById(patientId).isEmpty()) {
throw new NotFoundException("Patient with ID " + patientId + " does not exist.");
}
patientRecordRepository.deleteById(patientId);
}
contentType
方法不属于 mockMvc
class 而属于 MockHttpServletRequestBuilder
class 并且它设置 'Content-Type' header 到特定类型的请求(在这种情况下,您通知端点您请求的请求 body 格式为 JSON)。
这基本上设置了请求的 Content-Type
header(在您的情况下 JSON)。
中查看更多信息
我不明白这种方法的意义,也找不到任何相关信息。使用它的原因是什么,尤其是对于下面示例中的 void 方法?我试过在我的测试中删除它,看起来一切都是一样的。 测试
@Test
public void deletePatientById_success() throws Exception {
Mockito.when(patientRecordRepository.findById(RECORD_2.getPatientId())).thenReturn(Optional.of(RECORD_2));
mockMvc.perform(MockMvcRequestBuilders
.delete("/patient/2")
.contentType(MediaType.APPLICATION_JSON))
.andExpect(status().isOk());
}
待测控制器
@DeleteMapping(value = "{patientId}")
public void deletePatientById(@PathVariable(value = "patientId") Long patientId) throws NotFoundException {
if (patientRecordRepository.findById(patientId).isEmpty()) {
throw new NotFoundException("Patient with ID " + patientId + " does not exist.");
}
patientRecordRepository.deleteById(patientId);
}
contentType
方法不属于 mockMvc
class 而属于 MockHttpServletRequestBuilder
class 并且它设置 'Content-Type' header 到特定类型的请求(在这种情况下,您通知端点您请求的请求 body 格式为 JSON)。
这基本上设置了请求的 Content-Type
header(在您的情况下 JSON)。