Test d'intégration de l'Affichage d'un objet entier de contrôleur Spring MVC

Est-il un moyen de passer un ensemble de la forme de l'objet à se moquer de la demande lors des tests d'intégration d'un spring mvc web app? Tout ce que je peux trouver est de passer chaque domaine séparément comme un paramètre comme ceci:

mockMvc.perform(post("/somehwere/new").param("items[0].value","value"));

Ce qui est bien pour les petites formes. Mais que faire si ma posté objet est importante, plus? Il fait également le code de test look plus agréable si je peux juste poster un objet entier.

Plus précisément je voudrais tester la sélection de plusieurs éléments par case, puis de les afficher. Bien sûr, j'ai pu tester la qualité de l'enregistrement d'un seul élément, mais je me demandais..

Nous sommes à l'aide de printemps 3.2.2 avec le printemps-test-mvc inclus.

Mon Modèle pour la forme ressemble à quelque chose comme ceci:

NewObject {
    List<Item> selection;
}

J'ai essayé appelle comme ceci:

mockMvc.perform(post("/somehwere/new").requestAttr("newObject", newObject) 

à un Contrôleur comme ceci:

@Controller
@RequestMapping(value = "/somewhere/new")
public class SomewhereController {

    @RequestMapping(method = RequestMethod.POST)
    public String post(
            @ModelAttribute("newObject") NewObject newObject) {
        //...
    }

Mais l'objet sera vide (oui, j'ai rempli avant dans le test)

La seule solution que j'ai trouvé était à l'aide de @SessionAttribute comme ceci:
Des Tests d'intégration de Spring MVC Applications: les Formes

Mais je n'aime pas l'idée d'avoir à penser à appeler à la fin de chaque contrôleur où j'ai besoin de cela. Après toutes les données du formulaire ne doit pas être à l'intérieur de la session, j'ai seulement besoin pour la demande.

Donc la seule chose à laquelle je pense est de faire écrire quelques Util classe qui utilise la MockHttpServletRequestBuilder pour ajouter tous les champs d'objet comme .param à l'aide de réflexions ou individuellement pour chaque cas de test..

Je ne sais pas, feeld de l'onu-intuitif..

Des pensées et des idées sur comment je pourrais faire de ma vie plus facile? (En dehors de tout appeler le contrôleur directement)

Merci!

  • essayez d'utiliser gson et de convertir l'objet en json et le poster ??
  • comment va l'aider? Mon formulaire de post MediaType.APPLICATION_FORM_URLENCODED de données donc mon test doit envoyer des données.. j'ai même essayé de le convertir dans le lien que j'ai postet l'envoi de byte[] pour le contrôleur, mais il ne veut toujours pas le ramasser..
InformationsquelleAutor Pete | 2013-06-17