我正在使用wiremock进行REST测试,并面临以下问题。我创建了以下2个json请求。
请求1:
{
"request": {
"method": "GET",
"urlPattern": "/api/v1/user/2158634832/ishop.*",
"headers": {
"Accept": {
"contains": "application/json"
},
"X-RequestId": {
"matches": ".*"
},
"X-SecurityToken": {
"matches": "valid_secure_token"
}
}
},
"response": {
"status": 200,
"jsonBody": {
"user": {
"ID": "5cc1b131-8858-4870-a7ce-fd37aa805ebf",
"info": [
{
"kid": "2f0ad36a-9f23-427c-9a15-16d240385b87",
"cid": 10962435,
"pid": "V",
"contactid": 11812026,
"created": "2017-04-26T00:08:25.926",
"lastModified": "2017-04-27T00:01:45.047",
}
]
}
},
"headers": {
"Content-Type": "application/json"
}
}
}我对上述wiremock的Get请求如下所示
**/api/v1/user/2158634832/ishop?ID=9879cfde-e353-4722-a91e-f22d29d8195c**请求2:
{
"request": {
"method": "GET",
"urlPattern": "/api/v1/user/2158634832/ishop/status.*",
"headers": {
"Accept": {
"contains": "application/json"
},
"X-RequestId": {
"matches": ".*"
},
"X-SecurityToken": {
"matches": "valid_secure_token"
}
}
},
"response": {
"status": 200,
"jsonBody": {
"userstatus": {
"id": "5cc1b131-8858-4870-a7ce-fd37aa805ebf",
"type": "ishop",
"status" : "active",
"lastModifiedTime": "2017-04-27T00:01:45.047",
"allowedChange": "true"
}
},
"headers": {
"Content-Type": "application/json"
}
}
}我对上述请求的请求如下所示
/api/v1/user/2158634832/ishop/status?ID=9879cfde-e353-4722-a91e-f22d29d8195c
这里的问题是,由于请求1和请求2的类似URL模式,有时发生的事情是
当我提交请求1的请求时,我得到的是请求2的答复。
有人能建议我怎么解决这个问题吗?我希望与matches和urlPattern有关,我可以在第一个请求中删除状态调用,但不确定如何做到。
有什么建议吗?
发布于 2017-07-10 13:13:35
由于一个请求URL包含另一个请求URL,匹配较短URL的正则表达式也将匹配较长的URL。我怀疑这就是为什么你更喜欢更长的时候,更短的匹配。
我建议对你的URL匹配更具体一些。
第一个存根中的"urlPath": "/api/v1/user/2158634832/ishop"和
"urlPath": "/api/v1/user/2158634832/ishop/status"在第二个
尽管您没有指定ID查询param,但它们仍然匹配。WireMock将没有匹配参数的额外头或查询参数视为“不关心,无论如何匹配”。
发布于 2017-07-12 17:16:52
嗯,我用以下的方式修复了它
请求1更改为
"urlPattern": "/api/v1/user/2158634832/ishop.*",至
"urlPath": "/api/v1/user/2158634832/ishop",请求2改为
"urlPattern": "/api/v1/user/2158634832/ishop/status.*",至
"urlPath": "/api/v1/user/2158634832/ishop/status",发布于 2018-08-23 20:23:34
更好的解决方案是使用存根优先级:
http://wiremock.org/docs/stubbing/#stub-priority
这样您仍然可以使用urlPatten
{
"priority" : 2,
"request": {
"method": "GET",
"urlPattern": "/api/v1/user/2158634832/ishop.*",
"headers": {
...以及:
{
"priority" : 1,
"request": {
"method": "GET",
"urlPattern": "/api/v1/user/2158634832/ishop/status.*",
"headers": {
...https://stackoverflow.com/questions/44998429
复制相似问题