【发布时间】:2021-05-04 12:35:32
【问题描述】:
最近在wiremock (http://wiremock.org/docs/request-matching/) 中学习了请求匹配。想知道当一个请求的主体匹配多个映射时会发生什么(为具有不同条件的相同 url 路径定义并返回不同的 json 响应)?
【问题讨论】:
标签: java spring dropwizard wiremock
最近在wiremock (http://wiremock.org/docs/request-matching/) 中学习了请求匹配。想知道当一个请求的主体匹配多个映射时会发生什么(为具有不同条件的相同 url 路径定义并返回不同的 json 响应)?
【问题讨论】:
标签: java spring dropwizard wiremock
从技术上讲,WireMock 永远不会匹配两次——一旦找到单个匹配项,它就会返回该匹配项。根据我自己使用单独映射文件进行的测试,这个通常是最近添加的映射(我不知道这如何以编程方式创建存根,但我的猜测是最近添加的存根将被匹配并返回)。
为避免这种歧义,您可以采用一些策略,但我个人最喜欢的是使用 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。
【讨论】: