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)。

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/test/web/servlet/request/MockHttpServletRequestBuilder.html#contentType-org.springframework.http.MediaType-

中查看更多信息