2013-05-29 50 views
4

在JUnit測試中,是否有任何方式來測試從Spring MVC控制器返回的forward:/視圖的功能?在Spring MVC App中測試轉發

我使用Spring 3.2的MockMvc功能,在某些情況下,我的控制器轉發給另一個(通過返回視圖名稱forward:/pathHandledByController)。

能夠斷言發生此轉發時,將應用來自第二個控制器的所有@ModelAttribute,並且所有處理均正常進行。不幸的是MockMvc只能讓我斷言視圖名稱返回從forward:/開始。

有沒有什麼辦法可以測試這個,而不需要像Jetty那樣在整個網絡應用程序中旋轉?我有很多服務被嵌入到MVC應用程序中,我將如何創建一個使用單獨的Spring配置(來自src/test/resources)和這些服務的模擬的web應用程序?

+0

這聽起來像你想測試Spring本身,而不是你的web應用。如果你正在檢查viewName是否如預期的那樣,那麼在我看來,你可以信任Spring從那裏接管,至少就單元測試而言。 –

回答

2

您可以使用forwardedUrl匹配:

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