2014-10-05 131 views
0

我正在使用spring-boot-starter-web,spring-boot-starter-test和spring-boot-starter-groovy-templates(1.2.0.M1)。彈簧控制器在控制器測試中找不到模板

我正試圖用spring引導來構建一個小應用程序。我用mockito爲mvc控制器寫了測試。如果我使用Maven運行這些測試,我得到以下錯誤每個控制器測試:

Servlet Could not resolve view with name 'persons/list' 

我不知道我是否已經配置了一些錯誤。

在測試用例的錯誤消失:

  • 如果我的版本改爲彈簧引導啓動父
  • 的1.1.7.RELEASE如果我使用組件掃描和initalize的服務bean作爲一個完整的豆

我已經安裝上發生像在我的應用程序相同的錯誤的示例項目: https://github.com/waldemar-schneider/spring-boot-mvc-test

我在想什麼?在此先感謝

+0

如果您具有可重現性測試用例,在GitHub上針對Spring Boot提出錯誤。 – chrylis 2014-10-05 21:48:33

回答

0
  1. application.properties是空
  2. 什麼代表'persons/list'?一個jsp文件?一個瓷磚視圖名稱?你需要配置application.properties
  3. 考慮這樣的事情

application.properties

+0

只有使用@EnableAutoConfiguration時,application.properties文件纔是相關的。正如我在其他評論中提到的,我不想爲了運行mvc控制器的單元測試而創建整個jpa堆棧(和其他功能)。我想我並沒有詳細描述我的問題,對此抱歉。但感謝您的想法 – 2014-10-06 19:53:02

+0

我明白,但只是好奇,如果您添加'@ EnableAutoConfiguration',一旦您的所有測試均爲綠色,您需要在生產環境中工作。我正確嗎? – 2014-10-06 21:06:35

1

您還沒有啓用自動配置,這些會用來通過PersonControllerTest的配置,這意味着它的Groovy模板支撐春天啓動的自動配置不會發生。要解決該問題,請將@EnableAutoConfiguration添加到ControllerTestConfig

它實際上並沒有與1.1.7.RELEASE一起工作,但它的失敗方式與您的測試無法識別的方式不同。

如果您更新的測試也叫MockMvcResultHandlers.print()

… 
MockHttpServletResponse: 
      Status = 200 
    Error message = null 
     Headers = {Content-Type=[text/html;charset=UTF-8]} 
    Content type = text/html;charset=UTF-8 
      Body = 
    Forwarded URL = null 
    Redirected URL = null 
     Cookies = [] 

如果添加@EnableAutoConfiguration如上所述:

mockMvc.perform(get("/persons/")); 
    .andDo(print()) 
    .andExpect(status().isOk()) 
    .andExpect(view().name("persons/list")) 
    .andExpect(model().attribute("persons", hasSize(1))); 

你會在響應具有空體輸出看到,響應將包含預期的HTML:

… 
MockHttpServletResponse: 
      Status = 200 
    Error message = null 
     Headers = {Content-Type=[text/html;charset=UTF-8]} 
    Content type = text/html;charset=UTF-8 
      Body = <!DOCTYPE html><html class='no-js' lang='en'><head></head><body><h2>Person list</h2><table><thead><tr><th>Name</th><th>Surname</th></tr></thead><tr><td/><td/></tr></table></body></html> 
    Forwarded URL = null 
    Redirected URL = null 
     Cookies = [] 
+0

感謝提示。我沒有看到。 但是我不想使用@EnableAutoConfiguration,因爲我不想爲了mvc控制器的單元測試初始化​​整個jpa棧。我查看了groovy標記模板視圖解析器的初始化,並找到了一個工作解決方案。我從spring引導中導入了兩個配置類。如果你有興趣,你可以在github存儲庫中看到結果。 – 2014-10-06 19:38:08