JsonPath中的数据与电线匹配

我试图为我的登录过程创建模拟。我使用POST方法与几个字段和登录对象(使用登录名,密码等) 为此,我正在使用JsonPath。代码如下: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": "[email protected]",

"password": "681819535da188b6ef2"

}

}

我收到404 但是,当我改变

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

正常

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

一切正常正好。

所以 - 如何检查里面的wiremock,使用matchesJsonPath如果给定的字段等于某个值? 如何在我的情况下将其应用于根域? 虽然我们在此 - 我有类似的问题,检查值是否为空。我试图应用正则表达式等 - 没有运气。

回答:

尝试用双点操作(递归) $ .. PARAMS [?(@。客户机版本== “1”)]

回答:

继为我工作。

"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)。

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

以上是 JsonPath中的数据与电线匹配 的全部内容, 来源链接: utcz.com/qa/264056.html

回到顶部