【问题标题】:Multiple matches for request body in wiremockWiremock中请求正文的多个匹配项
【发布时间】:2021-05-04 12:35:32
【问题描述】:

最近在wiremock (http://wiremock.org/docs/request-matching/) 中学习了请求匹配。想知道当一个请求的主体匹配多个映射时会发生什么(为具有不同条件的相同 url 路径定义并返回不同的 json 响应)?

【问题讨论】:

    标签: java spring dropwizard wiremock


    【解决方案1】:

    从技术上讲,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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-08
      • 2021-02-22
      • 2017-12-31
      相关资源
      最近更新 更多