如何使用Spring RestDoc和Spring Contract生成请求正文正则表达式匹配?

时间:2019-10-04 12:46:09

标签: junit5 mockmvc spring-cloud-contract spring-restdocs

使用mockMvc,Spring restDocs和Spring云使用以下@Test代码进行压缩:

var adminDTO = HandlerTestObjectGenerator.createRandomAdminDTO();

        mockMvc.perform(
                RestDocumentationRequestBuilders
                        .post("/api/admins")
                        .content(objectMapper.writeValueAsString(adminDTO))
                        .contentType(MediaType.APPLICATION_JSON_UTF8)
        ).andExpect(status().isCreated())
                .andDo(document("create-admin",
                        preprocessRequest(),
                        preprocessResponse(),
                        requestFields(
                                usernameFieldDescriptor,
                                passwordFieldDescriptor,
                                rolesFieldDescriptor
                        ),
                        responseFields(
                                admin_adminIdFieldDescriptor,
                                admin_usernameFieldDescriptor,
                                admin_rolesFieldDescriptor
                        ),
                        SpringCloudContractRestDocs.dslContract()
                ));

我得到了以下常规合同:

Contract.make {
    request {
        method 'POST'
        url '/api/admins'
        body('''{
  "username" : "6ddfee05-75c2-4cdb-b35e-668e79226e92",
  "password" : "91a96b76-283f-44eb-b6cc-72945872b287",
  "roles" : [ "ADMIN" ]
}''')
...

usernamepassword的请求正文值被硬编码在常规合同中,从而使它们在消费者方面不可预测。

我希望进行正则表达式模式验证,而不是对其进行硬编码,因此任何有效的输入都将返回合同的响应。

可以做到吗? 请按我提供的文档提供具体代码。

0 个答案:

没有答案