Nie można przetestować zawartości strony za pomocą testu sprężyny mvc, ponieważ jest pusta.Pusta treść testu wiosennego testu mvc
Biorąc najprostszy sterownik:
@RequestMapping(value = "/home")
public String home(HttpSession session, ModelMap model) {
return "home";
}
odpowiednie płytki config:
<definition name="base.definition" template="/jsp/view/application.jsp">
<put-attribute name="header" value="/jsp/view/header.jsp" />
<put-attribute name="menu" value="/jsp/view/menu.jsp" />
<put-attribute name="title" value="" />
<put-attribute name="body" value="" />
<put-attribute name="footer" value="/jsp/view/footer.jsp" />
</definition>
<definition name="home" extends="base.definition">
<put-attribute name="title" value="Welcome" />
<put-attribute name="body" value="/jsp/view/home/list-home.jsp" />
</definition>
Proste list-home.jsp
<p>Welcome</p>
a test:
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration()
@ContextConfiguration(classes = WebTestConfig.class)
public class HomeControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void _setup() {
this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
@Test
public void home() throws Exception {
mockMvc.perform(get("/home"))
.andDo(print())
.andExpect(status().isOk())
.andExpect(forwardedUrl("/jsp/view/application.jsp"))
.andExpect(content().string("Welcome"));
}
I to się niepowodzeniem java.lang.AssertionError: Response content expected:<Welcome> but was:<>
wydrukowany na odpowiedź jest następująca:
MockHttpServletResponse:
Status = 200
Error message = null
Headers = {}
Content type = null
Body =
Forwarded URL = /jsp/view/application.jsp
Redirected URL = null
Cookies = []
środowiska:
- Wiosna 3,2
- Płytki 2
- Java 6
Co przeoczyłem?
NB: Kod działa w Tomcat z prawdziwą przeglądarką.
Nie można przetestować jsp (zawartości) za pomocą testu sprężyny mvc. Jest jeszcze trudniej, jeśli w grę wchodzą płytki. Nie znajduję linku do dokumentacji ani źródła, ale nie jest to możliwe. – meistermeier
Dokumentacja: http://docs.spring.io/spring-framework/docs/3.2.0.BUILD-SNAPSHOT/reference/htmlsingle/#spring-mvc-test- framework z następującą linią 'W przeważającej części wszystko powinno działa tak jak w czasie wykonywania z wyjątkiem renderowania JSP, które nie jest dostępne poza kontenerem Serwletu. " – meistermeier
Tak więc proces testowania przedstawiony w http://www.infoq.com/presentations/spring-mvc-test-htmlunit jest niedostępny przed wiosną 4.x. Czy mam rację? – takacsot