Nous essayons de configurer Spring-Test-MVC pour notre application Web Spring-MVC. Nous avons commencé à utiliser Freemarker et tout allait bien. Nous avons décidé de l'encontre et essayons maintenant de la configurer avec JSP. Lorsque l'application de test est déployée sur un tomcat, cela fonctionne. Lorsque nous exécutons le test simple:
MockHttpServletRequest: HTTP Method = GET Request URI = / Parameters = {} Headers = {} Handler: Type = package.to.controller.HomeController Method = public org.springframework.web.servlet.ModelAndView package.to.controller.HomeController.index() Resolved Exception: Type = null ModelAndView: View name = index View = null Attribute = welcome value = Hello World! FlashMap: MockHttpServletResponse: Status = 200 Error message = null Headers = {} Content type = null Body = Forwarded URL = /views/index.jsp Redirected URL = null Cookies = []
3 Réponses :
Ajout de votre édition3, essentiellement pour le rendu JSP L'appel final est
RequestDispatcher requestDispatcher = httpRequest.getRequestDispacher(jspPath) requestDispatcher.forward(httpRequest,httpResponse)
@biju - J'apprécie cette réponse et cela m'a sauvé un voyage, et je n'essaie pas de tirer sur le messager ici, mais je dois dire au profit de quiconque de l'équipe de printemps qui pourrait être motivée pour construire quelque chose Mieux vaut MockMVC pour être à peu près un exercice de trivialité et de futilité. Premièrement, l'authentification du ressort n'est pas directement prise en charge. Ok assez juste si vous scrutez Stackoverflow, vous pouvez trouver une solution de contournement. Ensuite, je constate que si vous avez dans votre configuration de contexte de printemps, chaque chemin que vous pouvez rattraper est "OK", même s'il devrait renverser "NOTOND". Ok, quoi que ce soit, sortez ça et laissez-nous ne plus jamais en parler. :) Et maintenant, venez découvrir que MockMVC n'est vraiment que MockMC - aucun traitement de vue n'a lieu. Donc, à la fin de la journée, ce que ce logiciel est bon pour tester les applications qui ne contiennent ni de sécurité ni de vues - ce qui serait, quoi, exactement, les applications JSON jouet? P>
Et ce n'est pas vraiment une réponse, c'est un discours, ce qui signifie maintenant que MockMVC va me coûter aussi la réputation de Stackoverflow aussi! :) Hulk Smash! P>
[EDIT] - OK Rant de côté, il ressemble à des voies autour de cela. [Editer ultérieurement] Malheureusement, la voie à laquelle j'ai trouvé n'est plus disponible. P>
Bien que c'était une déclaration, il s'agissait aussi d'une déclaration utile, probablement juste m'a sauvé 2 heures de même que vous le mettez si élégamment "Scout Stackoverflow" i>
Ah ... ce lien est à un site de spam sexuel.
@dwjohnston - Oui, maintenant c'est, mais pas quand je le monte. En tout cas, j'ai supprimé le lien.
Quel était le chemin qui l'entoure? Cela pourrait-il fonctionner à nouveau maintenant? Je suis Avoir le même problème .
En fait, j'ai constaté que cela rendait effectivement la vue si vous chargez réellement votre configuration de vue (je n'étais pas au début). Apparemment, cela ne fonctionne pas pour les points de vue JSP, mais je ne suis intéressé que par XML et JSON.
J'ai créé une version modifiée de MockReQuestDispatcher qui construit la même chaîne que MockMVC et transmet la demande à cette chaîne pour les demandes de terme. Cela fixe ce problème pour moi. Un peu plus de travail doit être fait si la vue est rendue à l'extérieur du servlet Dispatcher (par exemple via JSP).
Le code est là: https://gist.github.com/micw/a8b20720db900762a29d p>
La plupart des travaux devaient l'injecter au bon endroit. Je l'ai fait ma création d'un demandeur de demande de mockmvc et de ma moqueur qui intercepte l'appel de MockHttpServleReQuest.getreQuestDisPatcher. P>
Pour l'utiliser, ajoutez-le à votre parcours de test et appelez-le directement après la création de votre instance MockMVC: < / p>