Je suis nouveau sur Spring MVC et je suis en train d'apprendre à tester mes contrôleurs. J'ai un test simple:Accéder aux attributs d'un modèle contenu dans un objet ModelAndView à partir du contexte d'un test de contrôleur
@Test
public void shouldDoStuff()
{
request.setRequestURI("/myCompany/123");
ModelAndView mav = controller.getSomeDatas("123", request);
assertEquals(mav.getViewName(), "company");
assertTrue(mav.getModel().containsKey("companyInfo"));
assertTrue(mav.getModel().containsKey("rightNow"));
assertEquals(mav.getModel().get("companyInfo"), "123");
}
Voici mon action du contrôleur:
@RequestMapping(value = "/myCompany/{companyGuid}", method = RequestMethod.GET)
public ModelAndView getSomeDatas(@PathVariable("companyGuid") String myGuid, HttpServletRequest request)
{
/*ModelAndView mav = new ModelAndView("company");
mav.addObject("companyInfo", myGuid);
mav.addObject("rightNow", (new Date()).toString());
return mav;*/
Map<String, Object> myModel = new HashMap<String, Object>();
myModel.put("companyInfo", myGuid);
myModel.put("rightNow", (new Date()).toString());
return new ModelAndView("company", "model", myModel);
}
J'ai un point d'arrêt défini sur la première assert. Dans le retourne exactement ce que j'attends fenêtre d'affichage dans Eclipse, mav.getModel():
mav.getModel()
(org.springframework.ui.ModelMap) {model={rightNow=Fri Nov 05 13:30:57 CDT 2010, companyInfo=123}}
Cependant, toute tentative d'accéder aux valeurs dans ce modèle échoue. Par exemple, je suppose ce qui suit fonctionnerait:
mav.getModel().get("companyInfo")
null
mav.getModel().containsKey("companyInfo")
(boolean) false
Mais comme vous pouvez le voir, obtenir ("CompanyInfo") renvoie null, et containsKey ("CompanyInfo") retourne false. Lorsque j'échange la section commentée du contrôleur avec la section décommentée, mes tests fonctionnent correctement, mais ma vue jsp s'arrête, car j'essaie d'accéder aux propriétés du modèle en disant des choses comme $ {modèle .companyInfo}, etc.
donc je dois savoir au moins une des deux choses (mais mieux si vous pouvez répondre à la fois):
- Si je quitte le contrôleur comme le montre, comment puis-je accéder à la attributs du modèle dans mon test?
- Si j'échange la section commentée de la section non commentée, comment puis-je accéder aux attributs du modèle dans ma vue jsp?
Toute aide est appréciée.
Eh bien la réponse évidente est que votre contrôleur est cassé, et le test fait son travail. Sans voir votre code de contrôleur, c'est tout ce que je peux suggérer, – skaffman
J'ai mis à jour ma question pour inclure mon code de contrôleur. D'une manière ou d'une autre, le fait que l'objet contienne clairement la valeur que je recherche semble plutôt contradictoire avec le fait que je ne peux pas récupérer cette valeur, n'est-ce pas? – Samo