Wiremock 中请求主体的多个匹配项
Multiple matches for request body in wiremock
最近学习了 wiremock 中的请求匹配 (http://wiremock.org/docs/request-matching/)。想知道当请求的主体匹配多个映射时会发生什么(为具有不同条件的相同 url 路径和 returns 不同的 json 响应定义)?
从技术上讲,WireMock 永远不会匹配两次——一旦找到一个匹配项,它就会 return 进行匹配。根据我自己使用单独的映射文件进行的测试,这个 通常 是最近添加的映射(我不知道这如何以编程方式创建存根,但我的猜测是最近添加的存根将被匹配并 returned).
为避免这种歧义,您可以采用一些策略,但我个人最喜欢的是使用 priority
字段以及特定和一般映射。
{
"priority": 1,
"request": {
"url": "/test",
"queryParameters": {
"search_term": {
"equalTo": "WireMock"
}
}
},
"response": {
"status": 201
}
}
{
"priority": 10,
"request": {
"url": "/test",
"queryParameters": {
"search_term": {
"matches": "*"
}
}
},
"response": {
"status": 204
}
}
有关优先级的更多信息 can be found here。
我还质疑您不应该有两个都匹配的 特定 映射——匹配器应该有足够的差异以将两者分开。如果您确实需要两个相同的匹配项,以模拟数据更改或其他一些工作流程,you can use scenarios to achieve this.
最近学习了 wiremock 中的请求匹配 (http://wiremock.org/docs/request-matching/)。想知道当请求的主体匹配多个映射时会发生什么(为具有不同条件的相同 url 路径和 returns 不同的 json 响应定义)?
从技术上讲,WireMock 永远不会匹配两次——一旦找到一个匹配项,它就会 return 进行匹配。根据我自己使用单独的映射文件进行的测试,这个 通常 是最近添加的映射(我不知道这如何以编程方式创建存根,但我的猜测是最近添加的存根将被匹配并 returned).
为避免这种歧义,您可以采用一些策略,但我个人最喜欢的是使用 priority
字段以及特定和一般映射。
{
"priority": 1,
"request": {
"url": "/test",
"queryParameters": {
"search_term": {
"equalTo": "WireMock"
}
}
},
"response": {
"status": 201
}
}
{
"priority": 10,
"request": {
"url": "/test",
"queryParameters": {
"search_term": {
"matches": "*"
}
}
},
"response": {
"status": 204
}
}
有关优先级的更多信息 can be found here。
我还质疑您不应该有两个都匹配的 特定 映射——匹配器应该有足够的差异以将两者分开。如果您确实需要两个相同的匹配项,以模拟数据更改或其他一些工作流程,you can use scenarios to achieve this.