В идеале, если вы следовали хорошей практике кодирования, вы никогда не закончите тем, что будете писать контрольные примеры для контроллера или юриста по данным. В идеале тестовые случаи используются для проверки некоторой бизнес-логики, включенной в код, и по ссылке мы должны записать весь бизнес в сервисы.
На контроллере нужно выполнять гораздо меньше работы, например, при проверке запроса.
В любом случае приведенный ниже фрагмент кода может помочь вам протестировать методы контроллера.
MockMvc mvc;
@Autowired
WebApplicationContext webApplicationContext;
protected void setUp() {
mvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
}
protected String mapToJson(Object obj) throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.writeValueAsString(obj);
}
protected <T> T mapFromJson(String json, Class<T> clazz)
throws JsonParseException, JsonMappingException, IOException {
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(json, clazz);
}
@Test
public void someMethodTest() throws Exception {
String uri = "/somepath";
Authentication authentication = new Authentication ();
String inputJson = super.mapToJson(authentication);
MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(uri)
.contentType(MediaType.APPLICATION_JSON_VALUE).content(inputJson)).andReturn();
int status = mvcResult.getResponse().getStatus();
assertEquals(200, status);
String content = mvcResult.getResponse().getContentAsString();
// Assert whatever you want
assertEquals();
}