2010-04-22 5 views
0

Je suis unité de test mon SpringMVC contrôleurs en utilisant le code comme le suivant (v 2,5.):test contrôleurs SpringMVC

public void testParamValidation() { 
    MyController controller = new MyController(); 
    MockHttpServletRequest request = new MockHttpServletRequest(); 
    request.addParameter("foo", "bar"); 
    request.addParameter("bar", baz"); 
    ModelAndView mav = controller .handleRequest(request, new MockHttpServletResponse()); 
    // Do some assertions on mav 
} 

Ce contrôleur est une sous-classe de AbstractCommandController, de sorte que les paramètres sont liés à un grain de commande et toutes les erreurs de liaison ou de validation sont stockées dans un objet qui implémente l'interface Errors.

Je n'arrive pas à trouver un moyen d'accéder à ce Errors depuis le test, est-ce possible?

Merci, Don

Répondre

1

Pour tester le validateur dans mes contrôleurs je fais quelque chose comme ce qui suit. Fondamentalement, j'utilise une exception BindException pour avoir accès aux erreurs.

BindException ex = new BindException(commandObject, "commandName"); 
controller.onBindAndValidate(new MockHttpServletRequest(), commandObject, ex); 
assertEquals(1, ex.getErrorCount()); 
List<ObjectError> errors = (List<ObjectError>)ex.getAllErrors(); 
assertEquals("INVALID_COMMAND", errors.get(0).getCode()); 
Questions connexes