#java #spring #spring-boot #unit-testing #mockmvc
Вопрос:
Я пишу модульные тесты для своих методов контроллера. MockMvc проверяет все методы, которые требуют параметров запроса или тела JSON. Однако он не проверяет методы контроллера, которые используют приложение/x-www-форма-url, закодированные. Ниже приведен пример:
@RestController
@RequestMapping("/pools")
@Validated
public class PoolController {
@PostMapping(value = "/test", consumes = "application/x-www-form-urlencoded")
public ResponseEntity createPool(@NotBlank(message = "poolName cannot be blank") String poolName) {
return ResponseEntity.ok().build();
}
}
И в моем модульном тесте
@Test
public void createPool400() throws Exception {
mockMvc
.perform(post("/pools/test")
.contentType(MediaType.APPLICATION_FORM_URLENCODED))
//.param("poolName", "test"))
.andExpect(status().isBadRequest());
}
Тест должен вернуть неверный запрос, поскольку параметр имени пула не задан. Если я отлажу метод, он покажет мне, что имя пула может быть пустым или пустым.
Я перепробовал несколько способов передачи данных в MockMvc, таких как:
.content("poolName="))
или
.content(EntityUtils.toString(new UrlEncodedFormEntity(Arrays.asList(
new BasicNameValuePair("poolName", (String) null)
)))))
Почему это не подтверждается?