【问题标题】:I would like to test the resolved view name for a spring controller我想测试一个弹簧控制器的解析视图名称
【发布时间】:2015-09-09 19:43:21
【问题描述】:

我的控制器返回的简单案例 新模型和视图(“你好”)。 "hello" 映射/解析到(在 xml 文件中)到 jsp, 例如“你好”可以映射到 WEB-INF/myapp/goodbye.jsp。 我想为我的控制器编写一个测试,以验证返回的视图名称是否可以正确解析。如果在某个地方,无论是在控制器中还是在定义视图名称的映射的(我正在使用图块进行映射)spring 配置中。

    <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>

【问题讨论】:

    标签: spring-test spring-mvc-test


    【解决方案1】:

    您可以使用Spring MVC Test Framework 来验证已解析视图的目标 JSP。

    以下是参考手册的相关摘录:

    Spring MVC 测试建立在熟悉的“模拟”实现之上 spring-test 模块中提供的 Servlet API。这允许 执行请求并生成响应,而无需 在 Servlet 容器中运行。在大多数情况下,一切都应该 像在运行时一样工作,除了 JSP 渲染,它 在 Servlet 容器之外不可用。此外,如果你是 熟悉MockHttpServletResponse 的工作原理,你就会知道 转发和重定向实际上并未执行。而是“转发” 和“重定向”的 URL 被保存并且可以在测试中断言。这 意味着如果您使用 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"));
    }
    

    问候,

    山姆

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-06
      • 2016-03-28
      • 2011-04-06
      • 2014-11-30
      • 2014-02-09
      • 1970-01-01
      相关资源
      最近更新 更多