Вы можете предоставить собственный ResultMatcher:
mockMvc.perform(post("/postregistration")
.content(toJson(registrationDto))
.andExpect(result -> assertEquals("Body posted, it should return OK", HttpStatus.OK.value() , result.getResponse().getStatus())))
mockMvc.perform(post("/postregistration"))
.andExpect(result -> assertEquals("Bad request because body not posted", HttpStatus.BAD_REQUEST.value(), result.getResponse().getStatus()));
Explaination :
На сегодняшний день метод .andExpect()
принимает только один ResultMatcher. Когда вы используете .andExpect(status().isOk())
, класс StatusResultMatchers создаст ResultMatcher следующим образом:
public class StatusResultMatchers {
//...
public ResultMatcher isOk() {
return matcher(HttpStatus.OK);
}
//...
private ResultMatcher matcher(HttpStatus status) {
return result -> assertEquals("Status", status.value(), result.getResponse().getStatus());
}
}
Как вы можете видеть, сообщение жестко запрограммировано на «Статус», и нет другого встроенного метода для настройки Это. Таким образом, несмотря на то, что предоставление настраиваемого ResultMatcher немного многословно, на данный момент это может быть единственный возможный способ использования mock Mvc.