web-dev-qa-db-ja.com

pathParametersドキュメントの例外(urlTemplateが見つかりません)

pathParametersを使用して以下のようなURIパスパラメータを文書化する場合

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

説明したようにテストセットアップを行ったと確信しています ここ

私はおそらく何を間違えたのでしょうか?

(春RESTドキュメントバージョンは1.0.0.BUILD-SNAPSHOT)

26
FrVaBe

例外メッセージはあなたを正しい方向に向けようとしています:

urlTemplateが見つかりません。 RestDocumentationRequestBuildersを使用してリクエストを作成しましたか?

Spring RESTドキュメントがURLをキャプチャし、そこからパラメータを抽出できるように、RestDocumentationRequestBuildersを使用する必要があります。これは ドキュメントに記載されています 言う:

パスパラメーターをドキュメントで使用できるようにするには、MockMvcRequestBuildersではなくRestDocumentationRequestBuildersのいずれかのメソッドを使用してリクエストを作成する必要があります。

MockMvcRequestBuilders.getの静的インポートをRestDocumentationRequestBuilders.getの静的インポートに置き換えると、問題が解決するはずです。

45
Andy Wilkinson