2015-10-01 43 views
11

當使用pathParameters記錄URI路徑參數,如下面pathParameters文件例外(urlTemplate未找到)

@Test 
public void documentGetRouteById() throws Exception { 
    this.mockMvc.perform(get("/route/{id}", "FooBar")).andExpect(status().isOk()) 
      .andDo(document("api-getRouteById", 
        pathParameters(parameterWithName("id").description("die Routen ID")))); 
} 

我收到以下錯誤時拋出

java.lang.IllegalArgumentException: urlTemplate not found. Did you use RestDocumentationRequestBuilders to build the request? 
    at org.springframework.util.Assert.notNull(Assert.java:112) 
    at org.springframework.restdocs.request.PathParametersSnippet.extractUrlTemplate(PathParametersSnippet.java:95) 
    at org.springframework.restdocs.request.PathParametersSnippet.extractActualParameters(PathParametersSnippet.java:82) 
    at org.springframework.restdocs.request.AbstractParametersSnippet.verifyParameterDescriptors(AbstractParametersSnippet.java:77) 
    at org.springframework.restdocs.request.AbstractParametersSnippet.createModel(AbstractParametersSnippet.java:65) 
    at org.springframework.restdocs.request.PathParametersSnippet.createModel(PathParametersSnippet.java:67) 
    at org.springframework.restdocs.snippet.TemplatedSnippet.document(TemplatedSnippet.java:64) 
    at org.springframework.restdocs.mockmvc.RestDocumentationResultHandler.handle(RestDocumentationResultHandler.java:101) 
    at org.springframework.test.web.servlet.MockMvc$1.andDo(MockMvc.java:158) 

我敢肯定我做了測試設置像解釋here一樣。

我可能做錯了什麼?

(彈簧安置文檔版本1.0.0.BUILD-SNAPSHOT)

回答

27

異常消息正試圖你指出正確的方向:找不到

urlTemplate。您是否使用RestDocumentationRequestBuilders來構建請求?

您需要使用,以便Spring REST Docs可以捕獲URL並從中提取參數。這是mentioned in the documentation,它說:

要發佈路徑參數文件,要求必須使用對RestDocumentationRequestBuilders而非MockMvcRequestBuilders的方法之一建造。

MockMvcRequestBuilders.get的靜態導入替換爲RestDocumentationRequestBuilders.get可以解決問題。

+0

所以你說這是全部寫下來?你是對的!有據可查的模塊。問題再次出現在顯示器前。 – FrVaBe