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) {

    }

}
Foi útil?

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 ele

  • analisar a resposta de response objecto.No seu caso Meal 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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top