I don’t understand the point of this method and can’t find any info about it. What is the reason of using it, especially for void methods like in example below? I’ve tried deleting it in my tests and seems like everything is the same. Test
@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()); }
Controller to be tested
@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); }
Advertisement
Answer
The contentType
method does not belong to the mockMvc
class but to the MockHttpServletRequestBuilder
class and it sets the ‘Content-Type’ header of the request to a specific type (in this case you inform the endpoint that the request body format of your request is JSON).