O teste de controlador de obter o valor de retorno
-
12-12-2019 - |
Pergunta
Como faço para obter o valor de retorno a partir deste teste?Meu controlador retorna @Responsebody Meal
@Test
// @Transactional
public void testPost() {
Profile profile = ProfileUtil.getProfile();
profileService.save(profile);
String requestUri = "/user/" + profile.getId() + "/meals";
request.setMethod("POST");
request.setRequestURI(requestUri);
Object handler;
try {
handler = handlerMapping.getHandler(request).getHandler();
handlerAdapter.handle(request, response, handler);
Assert.assertEquals(200, response.getStatus());
//I would like to have the controller return value here! :)
} catch (Exception e) {
}
}
Solução
Você tem duas opções:
chame o controlador diretamente, em vez de ir através do mapeamento de manipulador/servlet camada.Desta forma, você vai simplesmente pegar o
Meal
objeto e você pode executar afirmações sobre eleanalisar a resposta de
response
objecto.No seu casoMeal
objeto foi tomada pelo Spring MVC e organizado, provavelmente para XML ou JSON.O objeto original está perdido, você só pode obter o XML/JSON seqüência, analisar e executar afirmações sobre ele (por exemplo,usando XPath).
Ambos os métodos têm as suas vantagens.Prefiro o primeiro, se você quiser testar o controlador de si mesmo.O último é mais complexo, mas permite que você teste de empacotamento.