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