【问题标题】:Wiremock query parameter JSON stub fileWiremock 查询参数 JSON 存根文件
【发布时间】:2018-11-04 11:42:29
【问题描述】:

我正在尝试使用 wiremock JSON 存根文件模拟查询参数。

当我这样做时它会起作用:

{
  "request": {
    "method": "GET",
    "url": "/posts?id=1",
  },
//...
}

但是,当我将查询参数更改为使用这样的专用字段时,它不再起作用了:

{
  "request": {
    "method": "GET",
    "urlPath": "/posts",
    "queryParameters": {
      "id": {
        "equalTo": "1"
      }
    }
  },
  //...
}

知道为什么吗?

测试请求看起来像http://some-host/posts?id=1

【问题讨论】:

  • 下面的代码适合你吗?
  • 没有,你用的是哪个版本?
  • 2.18.0,你有什么错误吗?
  • 不是真的,我收到一条错误消息,提示“没有进一步的请求”,就像没有调用模拟时一样。我尝试升级没有结果。我应该尝试制作一个最小的可复制示例
  • 你是独立做的吗?你能试试localhost:8080/__admin吗?你在映射目录中有这个吗?

标签: java stub wiremock


【解决方案1】:

这对我有用,将您的 "urlPath" 更改为 "urlPathPattern",但在构建此 JSON 时要小心。所以urlPath 是精确匹配模式,但urlPathPattern 是路径和查询参数上的正则表达式匹配

  {
        "request": {
            "urlPathPattern": "/posts",
            "method": "GET",
            "queryParameters": {
                "id": {
                    "equalTo": "1"
                }
            }
        },
        "response": {
            "status": 200,
            "body":"This is successful"
        }
    }

【讨论】:

    【解决方案2】:

    问题是urlPath 不适用于queryParameters,这只是预期的行为。 :-/ 我在 Wiremock Github 存储库中找到了 this Q&A on the topic。根据@tomakehurst 的回答,这是预期行为,如果您使用urlPathPatternqueryParameters 将匹配。

    【讨论】:

      【解决方案3】:

      您可以尝试使用 urlPathPattern 而不是 urlPath

      正如here 所说,urlPath 用于精确匹配,而 urlPathPattern 用于 regex

      因此,在 QueryParameter 中使用 urlPathPattern 您的查询会得到解析。

      {
        "request": {
          "method": "GET",
          "urlPathPattern": "/posts",
          "queryParameters": {
            "id": {
              "equalTo": "1"
            }
          }
        },
        //...
      }
      

      尝试了解Wiremock 的以下概念。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多