I could not verify the contents of the page using the spring mvc test because it is empty.
The indicated simplest possible controller:
@RequestMapping(value = "/home") public String home(HttpSession session, ModelMap model) { return "home"; }
appropriate tile configurations:
<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>
Simple list-home.jsp
<p>Welcome</p>
And the 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")); }
And it fails java.lang.AssertionError: Response content expected:<Welcome> but was:<>
the printed answer is as follows:
MockHttpServletResponse: Status = 200 Error message = null Headers = {} Content type = null Body = Forwarded URL = /jsp/view/application.jsp Redirected URL = null Cookies = []
Environment:
What did I miss?
NB: the code works in Tomcat with a real browser.
source share