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.