wiremock post request json body 属性 值是动态生成的值如何存根
wiremock post request json body property value is dynamic generated value how to stub
我是 wiremock 的新手,我在我的 spring 引导集成测试中使用 wiremock 来模拟外部 http 调用之一。
我的 json 请求正文包含两个动态属性,所有其他字段都可以设置并存根在请求中只有两个字段值无法设置,因为它们是动态值。
由于这些本质上是动态的,我的意思是 属性 的值是随机自动生成的值。有没有办法忽略这些属性并保留所有属性无论如何都匹配。
我知道忽略可用于额外字段和数组顺序
withRequestBody(equalToJson(requestJson, true, true))
true ignoreArrayOrder
true ignoreExtraField
我想知道与上述类似的忽略特定 属性 的功能(用户可以提及 属性 名称以便 属性 它应该忽略)是否可用?
我有一个以下 json 请求正文,我需要在 wire mock post 中存根,所以我正在使用
requestJson
{
"property_one" : "Anand Sweets",
"property_two" : "Guru Sweets",
"property_three" : "Kranthi Sweets",
"property_four" : auto-generated-number, // dynamic number from code
"property_five" : null,
"propertysix" : " "GST128093",
"property_seven" : auto-generated-number, // dynamic number from code
"property_eight" : 13890139,
"property_nine" : 1290.90,
"property_ten" : "X239GDIJD9090"
}
存根
stubFor(post(urlEqualTo(testUrl))
.withHeader(CUSTKEY, equalTo(CUST_VALUE))
.withHeader(TOKENKEY, equalTo(TOKEN_VALUE))
.withHeader(MATCHKEY, equalTo(MATCH_VALUE))
.withRequestBody(equalToJson(requestJson, true, true))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBody(responseJson)
)
);
responseJson
{
"Success": true,
"message": "request processed successfully",
"success_code": 9000,
"external": "AKALDJKAD138948934"
}
在请求 json 中,我有大约 60 到 70 个属性,除了 property_four 和 property_seven 剩余的所有字段匹配正常进行。
我想知道如何在 Wiremock 中使用 equaltoJson(requestJson) 忽略这两个字段,因为这些字段值本质上是动态的,我想跳过这些属性进行匹配。
任何人都知道如何跳过或忽略这些属性或解决此问题的任何其他好的方法。
我想过使用 withRequestBody(matchingJsonPath(PATH)) 但是 巨大而复杂的请求 ,
我觉得,这不是正确的解决方案。
我的请求正文很复杂,我的意思是很多字段,例如,我只提到了十个具有示例属性和值的属性。
提前致谢,正如我之前所说,我是 wiremock 的新手。
假设您使用的是 WireMock 版本 2.26.3,您可以对请求中的任何 JSON 值使用占位符。有关详细信息,请参阅 the request matching 文档(最好搜索 "placeholders")。
{
"property_one" : "Anand Sweets",
"property_two" : "Guru Sweets",
"property_three" : "Kranthi Sweets",
"property_four" : "${json-unit.any-number}", // dynamic number from code
"property_five" : null,
"propertysix" : " "GST128093",
"property_seven" : "${json-unit.any-number}", // dynamic number from code
"property_eight" : 13890139,
"property_nine" : 1290.90,
"property_ten" : "X239GDIJD9090"
}
对于 2.26.3 之前的 WireMock 版本,JSON 匹配不太可靠,我绝对建议升级。
我是 wiremock 的新手,我在我的 spring 引导集成测试中使用 wiremock 来模拟外部 http 调用之一。
我的 json 请求正文包含两个动态属性,所有其他字段都可以设置并存根在请求中只有两个字段值无法设置,因为它们是动态值。
由于这些本质上是动态的,我的意思是 属性 的值是随机自动生成的值。有没有办法忽略这些属性并保留所有属性无论如何都匹配。
我知道忽略可用于额外字段和数组顺序
withRequestBody(equalToJson(requestJson, true, true))
true ignoreArrayOrder
true ignoreExtraField
我想知道与上述类似的忽略特定 属性 的功能(用户可以提及 属性 名称以便 属性 它应该忽略)是否可用?
我有一个以下 json 请求正文,我需要在 wire mock post 中存根,所以我正在使用
requestJson
{
"property_one" : "Anand Sweets",
"property_two" : "Guru Sweets",
"property_three" : "Kranthi Sweets",
"property_four" : auto-generated-number, // dynamic number from code
"property_five" : null,
"propertysix" : " "GST128093",
"property_seven" : auto-generated-number, // dynamic number from code
"property_eight" : 13890139,
"property_nine" : 1290.90,
"property_ten" : "X239GDIJD9090"
}
存根
stubFor(post(urlEqualTo(testUrl))
.withHeader(CUSTKEY, equalTo(CUST_VALUE))
.withHeader(TOKENKEY, equalTo(TOKEN_VALUE))
.withHeader(MATCHKEY, equalTo(MATCH_VALUE))
.withRequestBody(equalToJson(requestJson, true, true))
.willReturn(aResponse()
.withStatus(200)
.withHeader("Content-Type", "application/json")
.withBody(responseJson)
)
);
responseJson
{
"Success": true,
"message": "request processed successfully",
"success_code": 9000,
"external": "AKALDJKAD138948934"
}
在请求 json 中,我有大约 60 到 70 个属性,除了 property_four 和 property_seven 剩余的所有字段匹配正常进行。
我想知道如何在 Wiremock 中使用 equaltoJson(requestJson) 忽略这两个字段,因为这些字段值本质上是动态的,我想跳过这些属性进行匹配。
任何人都知道如何跳过或忽略这些属性或解决此问题的任何其他好的方法。
我想过使用 withRequestBody(matchingJsonPath(PATH)) 但是 巨大而复杂的请求 ,
我觉得,这不是正确的解决方案。
我的请求正文很复杂,我的意思是很多字段,例如,我只提到了十个具有示例属性和值的属性。
提前致谢,正如我之前所说,我是 wiremock 的新手。
假设您使用的是 WireMock 版本 2.26.3,您可以对请求中的任何 JSON 值使用占位符。有关详细信息,请参阅 the request matching 文档(最好搜索 "placeholders")。
{
"property_one" : "Anand Sweets",
"property_two" : "Guru Sweets",
"property_three" : "Kranthi Sweets",
"property_four" : "${json-unit.any-number}", // dynamic number from code
"property_five" : null,
"propertysix" : " "GST128093",
"property_seven" : "${json-unit.any-number}", // dynamic number from code
"property_eight" : 13890139,
"property_nine" : 1290.90,
"property_ten" : "X239GDIJD9090"
}
对于 2.26.3 之前的 WireMock 版本,JSON 匹配不太可靠,我绝对建议升级。