最近在wiremock中学习到的请求匹配(http://wiremock.org/docs/request-matching/)。想知道当一个请求的主体匹配多个映射(为具有不同条件的相同url路径定义并返回不同的json响应(时会发生什么?
从技术上讲,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
}
}
有关优先级的更多信息,请点击此处。
我还想挑战一下,不应该有两个特定于的映射,它们都是匹配的——匹配器应该足够不同,可以将两者分开。如果确实需要两个相同的匹配,为了模拟数据更改或其他工作流,可以使用场景来实现这一点。