JsonPath中的数据与Wiremock匹配

我试图为我的登录程序创建模拟。 我使用POST方法与几个字段和登录对象(使用登录名,密码等)为此,我正在使用JsonPath。 代码如下:

{
"request": {
        "method": "POST",
        "url": "/login",
        "bodyPatterns" : [
                {"matchesJsonPath" : "$.method"},
                {"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},
                {"matchesJsonPath" : "$.params.login"},
                {"matchesJsonPath" : "$.params.password"}
         ]
    },
    "response": {
            "status": 200,
            "bodyFileName": "login.json"
    }
}

我正在检查clientVersion,因为它与示例类似。

我的问题是,用te给POST JSON:

{
    "method": "login",
    "params": {
        "clientVersion": "1",
        "login": "test@test.com",
        "password": "681819535da188b6ef2"
    }
}

我收到404.但是,当我改变

{"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},

到正常

{"matchesJsonPath" : "$.params.clientVersion"},

一切正常。

所以 - 如何检查里面的wiremock,使用matchesJsonPath如果给定的字段等于某个值? 如何将它应用到根域像我的情况下的方法? 尽管我们处于这个状态,但在检查值是否为空时,我遇到了类似的问题。 我试图应用正则表达式等 - 没有运气。


以下为我工作。

"matchesJsonPath" : "$.rootItem.itemA[0].item..[?(@.fieldName=='file')]"

Json:

{
    "rootItem" :  {
          "itemA" : [
              {
                 "item" : {
                     "fieldName" : "file",
                     "name" : "test"
                 }
              }
          ]
    }
}

Wiremock

{
  "request" : {
    "urlPattern" : "/testjsonpath",
    "method" : "POST",
    "bodyPatterns" : [ {
      "matchesJsonPath" : "$.rootItem.itemA[0].item..[?(@.fieldName=='file')]"
    } ]
  },
  "response" : {
    "status" : 200,
    "body" : "{"result": "success"}",
    "headers" : {
      "Content-Type" : "application/json"
    }
  }
}

更新Wiremock 。 它应该适用于更新的版本> = 2.0.0-beta。 它的JsonPath依赖非常过时(GitHub#261)。

使用双点运算符在语义上并不相同,因为过滤器也将匹配树中更深的相同名称的元素。


尝试使用双点运算符(递归)$ .. params [?(@。clientVersion ==“1”)]

链接地址: http://www.djcxy.com/p/83873.html

上一篇: Matching data in JsonPath with wiremock

下一篇: How to get the Google Now searchbar into my app?