#java #unit-testing #mockito #mockmvc #springmockito
Вопрос:
Я использую MockMvc для тестирования. Как я могу отправить платеж в значение объекта в MockMvc.выполните, которое я могу получить методом контроллера.
Например, PaymentOrderDto.setMid(«m1») и т. Д.
@PostMapping(consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> createPaymentOrder(HttpServletRequest request, PaymentOrderDto paymentOrderDto,
@RequestPart(required = false) MultipartFile paymentReceiptFile,
@RequestParam(value = "contactId", required = true) String contactId,
HttpServletResponse response) {
--method body
}
List item
Ответ №1:
вы можете сделать это следующим образом;
Конечная точка контроллера;
@PostMapping(value = "createPaymentOrder", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces= MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<String> createPaymentOrder(HttpServletRequest request,
@RequestPart PaymentOrderDto paymentOrderDto,
@RequestPart(required = false) MultipartFile paymentReceiptFile,
@RequestParam(value = "contactId", required = true) String contactId,
HttpServletResponse response) {
return new ResponseEntity<String>(contactId ":" paymentOrderDto.getMid(), HttpStatus.OK);
}
Функция тестирования;
@Test
void testMe() throws Exception {
MockMultipartFile employeeJson = new MockMultipartFile("paymentOrderDto", null,
"application/json", "{"mid": "10"}".getBytes());
mockMvc.perform(MockMvcRequestBuilders.multipart("/createPaymentOrder")
.file(employeeJson)
//.file("") --> paymentReceiptFile which is not mandatory
.accept(MediaType.parseMediaType("application/json"))
.param("contactId", "C1")
.contentType(MediaType.MULTIPART_FORM_DATA_VALUE))
.andExpect(status().isOk())
.andExpect(content().contentType("application/json"))
.andDo(print())
.andExpect(mvcResult -> "C1:10".equals(mvcResult));
}