使用RestDocs 1.1.1.RELEASE版本和SpringBoot 1.4.0.RELEASE版本时,使用“ httpRequest”时的参数会记录两次。
如下代码:
@RunWith(SpringRunner.class) @WebMvcTest(ProductResource.class) @AutoConfigureRestDocs("target/generated-snippets") public class ProductResourceDocumentation { private static final String PROPERTY_ID_VALUE = "d7612"; private static final String SALES_MARKET_VALUE = "999"; private static final String SEASON_VALUE = "2016"; private static final String SECTIONS_VALUE = "buildings"; private static final String SHOW_DESCRIPTIONS_VALUE = "false"; private static final String STRING = "string"; private static final Integer NUMBER = 1; private static final String NOT_FOUND = "404 Not Found"; private static final String BAD_REQUEST = "400 Bad Request"; private RestDocumentationResultHandler documentationResultHandler; @MockBean private ProductHandler productHandler; @Autowired private MockMvc mockMvc; @Before public void setup() { this.documentationResultHandler = document("{class-name}/{method-name}", preprocessRequest(prettyPrint()), preprocessResponse(prettyPrint())); } @Test public void listProducts() throws Exception { Product product = getBasicProductsRepresentation(); when(productHandler.getProduct(PROPERTY_ID_VALUE, SALES_MARKET_VALUE, SEASON_VALUE, null, null)).thenReturn(product); mockMvc.perform(RestDocumentationRequestBuilders.get("/products/{propertyId}", PROPERTY_ID_VALUE) .param("salesMarket", SALES_MARKET_VALUE) .param("season", SEASON_VALUE)) .andDo(print()) .andExpect(status().isOk()) .andExpect(jsonPath("$.propertyID", is(PROPERTY_ID_VALUE))) .andExpect(jsonPath("$.season", is(SEASON_VALUE))) .andDo(documentationResultHandler.document( pathParameters( parameterWithName("propertyId").description(PATH_PARAM__PROPERTY_ID) ), requestParameters( parameterWithName("salesMarket").description(REQUEST_PARAM__SALES_MARKET), parameterWithName("season").description(REQUEST_PARAM__SEASON) ), httpRequest(), httpResponse() )); }
产生以下文档(“ salesMarket = 999&season = 2016”记录了两次):
GET /products/d7612? salesMarket=999&season=2016&salesMarket=999&season=2016 HTTP/1.1
是否有人经历过类似的经历或知道问题出在哪里?
这是一个bug一个已经固定1.1.2.RELEASE。升级将解决问题。升级时请确保您得到双方的1.1.2 spring- restdocs-mockmvc和spring-restdocs-core。后一个模块是修复程序所在的位置。
spring- restdocs-mockmvc
spring-restdocs-core