Simplist case我的控制器返回 新的ModelAndView("你好")。 "你好"映射/解析为(在xml文件中)到jsp, 例如"你好"可以映射到WEB-INF / myapp / goodbye.jsp。 我想为我的控制器编写一个测试,以验证返回的视图名称是否能正确解析。如果某个地方,无论是在控制器中还是(我正在使用tile来映射)spring config,它定义了视图名称尚未被指定的映射。
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/springmvc/tiles-myapp.xml</value>
</list>
</property>
</bean>
<definition name="hello" extends="main">
<put-attribute name="title" value="Simple App"/>
<put-attribute name="body" value="/WEB-INF/myapp/goodbye.jsp"/>
</definition>
答案 0 :(得分:1)
您可以使用Spring MVC Test Framework来验证已解析视图的目标JSP。
以下是参考手册的相关摘录:
Spring MVC Test建立在熟悉的“模拟”实现的基础之上
spring-test
模块中提供的Servlet API。这允许 在不需要的情况下执行请求和生成响应 在Servlet容器中运行。一切都应该是 除了JSP渲染之外,它在运行时工作 在Servlet容器外部不可用。而且,如果你是 熟悉MockHttpServletResponse
如何运作,你会知道的 转发和重定向实际上并未执行。而是“转发” 并且“重定向”的URL被保存并且可以在测试中断言。这个 意味着如果您正在使用JSP,则可以验证JSP页面 请求已转发。
Spring自己的测试套件中的JavaConfigTests
使用JSP和Tiles演示了这样的测试:
@Test
public void tilesDefinitions() throws Exception {
this.mockMvc.perform(get("/"))
.andExpect(status().isOk())
.andExpect(forwardedUrl("/WEB-INF/layouts/standardLayout.jsp"));
}
此致
萨姆