У меня есть сервлет, определенный в web.xml, поэтому я определил его внутри контроллера для тестирования только для MyResource
:
@Controller
public class TestMyServlet {
MyResource servlet;
@Autowired
AutowireCapableBeanFactory beanFac;
@PostConstruct
void init() {
servlet = new MyResource();
beanFac.autowireBean(servlet);
}
@RequestMapping(value = "/servlet/api/update", method = RequestMethod.POST)
public MyResponse handle(HttpServletRequest request, HttpServletResponse response, @RequestBody String json) {
return servlet.update(json);
}
Затем я проверяю его, используя MockHttpServletRequestBuilder
:
MockHttpServletRequestBuilder mockHttpServletRequestBuilder = MockMvcRequestBuilders
.post("/servlet/api/update")
.content("{\"id\":1,\"toggle\":true}]")
.session(httpSession)
.contentType(MediaType.APPLICATION_JSON);
MvcResult mvcResult = this.mockMvc.perform(mockHttpServletRequestBuilder)
.andDo(MockMvcResultHandlers.print())
.andReturn();
ModelAndView modelAndView = mvcResult.getModelAndView().getModelMap();
String response = mvcResult.getResponse().getContentAsString();
В сервлете я не использую ModelAndView
, просто возвращаю объект POJO (MyResponse
), который сериализуется в ответ JSON
Я вижу MyResponse
объект как второй атрибутв ModelAndView
, но response
равно нулю
Как проверить строку JSON, возвращенную в этом ответе?