我有非常相似的请求(肥皂),但略有不同。我的正则表达式单独工作,但是当我将映射部署到服务器时,错误的正则表达式总是有效。我的印象是他只选择了第一个合适的。我在在线正则表达式生成器中测试了我的正则表达式,不应该有任何混淆,但它在wiremock上不起作用。
不幸的是,我无法发布任何细节,但我已经以这种形式设置了我的映射:
.
.
.
"bodyPatterns": [
{
"matches": "1abcdf"
}
]
.
.
.
"bodyPatterns": [
{
"matches": "4abcdf"
}
]
.
.
.
"bodyPatterns": [
{
"matches": "10abcdf"
}
]
TBOMK,WireMock 采用最佳匹配请求,如果多个匹配,它会选择最近添加的请求。如果您想在这种情况下对请求进行优先级排序,可以将其添加到存根(https://wiremock.org/docs/stubbing/#stub-priority)。所以从你的描述来看,听起来所有请求都匹配,所以它需要最后一个。
对于主体模式:这是一个数组,因此如果有多个匹配,WireMock 会聚合结果,帮助您缩小结果范围(以防存在部分匹配)。也许这是改善比赛的一个选择。
此外,我建议您尝试将
XPath
与 WireMock 一起使用( https://wiremock.org/docs/request-matching/#xpath + https://wiremock.org/docs/request-matching /#combining-date-matchers-as-jsonpathxpath-sub-matchers )创建更精确的匹配。
您还可以增加详细程度,以获取有关为什么选择存根的一些信息并改进您的匹配逻辑。