我正在尝试配置Wiremock,如果请求主体包含这个或那个等内容,则从文本文件返回相同的响应。以下是我针对单个请求的工作文件:
{
"priority": 1,
"request": {
"method": "POST",
"urlPath": "/v1/retrieve-vehicle",
"bodyPatterns" : [ {
"contains" : "\"vehicleIdentifier\":\"EROR-103\""
} ]
},
"response": {
"status": 404,
"bodyFileName": "JsonFiles/NoVinFound-Error103.json",
"headers": {
"Content-Type": "application/json;charset=UTF-8"
}
}
}我尝试了几种bodyPatterns属性的组合(受文档启发),但都无济于事。
"bodyPatterns" : [ {
"contains" : "\"vehicleIdentifier\":\"EROR-103\"",
"contains" : "\"vehicleIdentifier\":\"EROR-103A\""
} ]"bodyPatterns" : [ {
"contains" : "\"vehicleIdentifier\":\"EROR-103\""
}, {
"contains" : "\"vehicleIdentifier\":\"EROR-103A\""
} ]"multipartPatterns" : [ {
"matchingType" : "ANY",
"bodyPatterns" : [ {
"contains" : "\"vehicleIdentifier\":\"EROR-103\"",
"contains" : "\"vehicleIdentifier\":\"EROR-103A\""
} ]
} ]"multipartPatterns" : [ {
"matchingType" : "ANY",
"bodyPatterns" : [ {
"contains" : "\"vehicleIdentifier\":\"EROR-103\""
}, {
"contains" : "\"vehicleIdentifier\":\"EROR-103A\""
} ]
} ]请告诉我哪里做错了。谢谢!
发布于 2020-05-19 23:49:51
我的一个同事找到了解决方案。我们需要一个“mappings tag”,然后列出完整的JSON对象,如下所示。
{
"mappings": [
{
"priority": 1,
"request": {
"method": "POST",
"urlPath": "/v1/retrieve-owner",
"bodyPatterns" : [ {
"matchesJsonPath": "$.[?($.vehicleIdentifier == 'VIN-A')]"
} ]
},
"response": {
"status": 200,
"bodyFileName": "JsonFiles/Exported-Vehicle.json",
"headers": {
"Content-Type": "application/json;charset=UTF-8"
}
}
},
{
"priority": 1,
"request": {
"method": "POST",
"urlPath": "/v1/retrieve-owner",
"bodyPatterns" : [ {
"matchesJsonPath": "$.[?($.vehicleIdentifier == 'VIN-B')]"
} ]
},
"response": {
"status": 200,
"bodyFileName": "JsonFiles/Exported-Vehicle.json",
"headers": {
"Content-Type": "application/json;charset=UTF-8"
}
}
}
]
}发布于 2020-05-20 00:40:53
使用mappings文件是可行的,但有一些注意事项,总的来说,我建议使用一种不同的方法。
相反,您可以有一个基于正则表达式匹配的单一映射文件。
{
"priority": 1,
"request": {
"method": "POST",
"urlPath": "/v1/retrieve-owner",
"bodyPatterns" : [ {
"matches": ".*\"vehicleIdentifer\": \"VIN-(A|B)\".*"
} ]
},
"response": {
"status": 200,
"bodyFileName": "JsonFiles/Exported-Vehicle.json",
"headers": {
"Content-Type": "application/json;charset=UTF-8"
}
}
}您可能需要尝试让正则表达式正确匹配,但这应该是可行的,并允许您具有更大的灵活性。假设您必须添加另一个匹配,则只需编辑正则表达式,而不是向映射文件添加一个全新的映射。
我也没有那么多使用matchesJsonPath的经验,但您也可以利用它,并在那里的值上进行正则表达式匹配。
下面是我个人最喜欢的使用正则表达式的工具:Regex101
https://stackoverflow.com/questions/61815835
复制相似问题