在线模拟中请求正文的多个匹配项

问题描述

最近在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