2016-09-26 41 views
0

我使用偉大的swagger2markup插件爲Swagger提供的REST API生成Asciidoc文檔。我按照swagger2markup documentation和我使用的是Spring MVC的集成測試,從我Springfox揚鞭端點這樣的(我使用Maven)生成標記:Swagger2Markup:在測試中使用Swagger遠程端點時如何按標籤分組?

@RunWith(SpringJUnit4ClassRunner.class) 
@SpringBootTest(classes = { AppConfig.class, SwaggerConfig.class }) 
public class DocumentationIT { 

    protected MockMvc mockMvc; 

    @Autowired 
    protected WebApplicationContext webApplicationContext; 

    @Rule 
    public JUnitRestDocumentation restDocumentation = new JUnitRestDocumentation("src/docs/asciidoc/apidoc/generated-snippets"); 

    @Before 
    public void setUp(){ 
     this.mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext) 
       .apply(documentationConfiguration(this.restDocumentation)) 
       .build(); 
    } 

    @Test 
    public void convertSwaggerToAsciiDoc() throws Exception { 
     this.mockMvc.perform(get("/v2/api-docs") 
       .accept(MediaType.APPLICATION_JSON)) 
       .andDo(
         Swagger2MarkupResultHandler 
           .outputDirectory("src/docs/asciidoc/apidoc") 
           .withExamples("src/docs/asciidoc/apidoc/generated-snippets").build()) 
       .andExpect(status().isOk()); 
    } 
} 

一切是偉大的工作,我的所有路徑都在我的最後文檔,但是路徑所有直接出現在根並且不被資源(由控制器IE)分組,所以從Method 1Controller 1將出現在相同的水平Method 2Controller 2

我的輸出:

enter image description here

我想什麼:

enter image description here

從我所看到的,在這個swagger2-markup Maven project template可以使用代時從本地文件一樣指定一個屬性來告訴swagger2markup使用配置屬性<swagger2markup.pathsGroupedBy>TAGS</swagger2markup.pathsGroupedBy>通過標籤對路徑進行分組,但是在使用0時似乎沒有這種配置來自測試。唯一的選擇是withMarkupLanguage(),但沒有withPathsGroupedBy()方法...

我在這裏錯過了什麼嗎?

回答

1

正如您所提到的,swagger2Markup提供了swagger2markup.pathsGroupedBy的屬性以指定路徑應該如何分組。但是,Swagger2MarkupResultHandler不提供API來支持配置。

根據Swagger2Markup API

Swagger2Markup的性能列在類 io.github.swagger2markup.Swagger2MarkupProperties定義。這些屬性 以下順序考慮:

  1. Java系統屬性

  2. 自定義屬性

  3. 默認屬性(包括在Swagger2Markup)

是可以使用系統屬性來配置它。因此,您可以在測試中將系統屬性swagger2markup.pathsGroupedBy設置爲TAGS

如果您更願意使用Java API對其進行配置,則可以使用Swagger2MarkupConfigBuilder API擴展Swagger2MarkupResultHandler並覆蓋handle方法。

+0

感謝您的回答。不幸的是,'springfox-staticdocs'插件當前不依賴於支持系統屬性的'Swagger2Markup'版本(它目前依賴於'v0.9.2',你引用的文檔似乎適用於'v1.0.0' +) 。 然而,你的第二個解決方案確實很好,即使我直接在lib中提交了一個[pull request](https://github.com/springfox/springfox/pull/1498) )但是現在這是一個足夠好的解決方法,謝謝! – Pom12

相關問題