【问题标题】:Testing Forwarding in a Spring MVC App在 Spring MVC 应用程序中测试转发
【发布时间】:2013-05-24 10:19:57
【问题描述】:

有什么方法可以测试在 JUnit 测试中从 Spring MVC 控制器返回的 forward:/ 视图的功能?

我正在使用 Spring 3.2 中的 MockMvc 功能,并且我的控制器在某些情况下转发到另一个(通过返回 forward:/pathHandledByController 的视图名称)。

很高兴能够断言,当这个转发发生时,来自第二个控制器的所有@ModelAttributes 都被应用并且一切都正常处理。不幸的是,MockMvc 只能让我断言返回的视图名称以 forward:/ 开头。

有没有什么方法可以在不使用 Jetty 之类的工具启动整个网络应用程序的情况下进行测试?我已经在 MVC 应用程序中插入了很多服务,我将如何创建一个使用单独的 Spring 配置(来自 src/test/resources)和这些服务的模拟的 web 应用程序?

【问题讨论】:

  • 这听起来像是你在尝试测试 Spring 本身而不是你的 webapp。如果您正在检查 viewName 是否符合预期,那么在我看来,您可以相信 Spring 从那里接管,至少就单元测试而言。

标签: spring spring-mvc junit jetty spring-mvc-test


【解决方案1】:

你可以使用forwardedUrl匹配器:

 mockMvc.perform(get("/controller/path"))
    .andExpect(forwardedUrl("/forwarded/url"));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 2016-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-20
    • 2023-03-10
    • 2012-11-23
    相关资源
    最近更新 更多