ログイン手順のモックを作成しようとしています。 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": "[email protected]",
"password": "681819535da188b6ef2"
}
}
404を受け取ります。ただし、変更すると
{"matchesJsonPath" : "$.params[?(@.clientVersion == "1")]"},
通常に
{"matchesJsonPath" : "$.params.clientVersion"},
すべてが正常に機能します。
だから-与えられたフィールドがある値に等しい場合にmatchesJsonPathを使用して、wiremockの内部をチェックする方法は?私の場合、メソッドのようなルートフィールドにそれを適用するにはどうすればよいですか?そして、私たちがそれに取り組んでいる間、値がnullでないかどうかをチェックする際に同様の問題が発生しました。正規表現などを適用してみましたが、運が悪かったです。
Wiremockを更新します。新しいバージョン> = 2.0.0-betaで動作するはずです。その JsonPath 依存関係は非常に時代遅れでした( GitHub#261 )。
二重ドット演算子の使用は意味的に同じではありません。これは、フィルターがツリーのより深い位置にある同じ名前の要素にも一致するためです。
以下は私のために働いた。
"matchesJsonPath" : "$.rootItem.itemA[0].item..[?(@.fieldName=='file')]"
Json:
{
"rootItem" : {
"itemA" : [
{
"item" : {
"fieldName" : "file",
"name" : "test"
}
}
]
}
}
ワイヤーモック
{
"request" : {
"urlPattern" : "/testjsonpath",
"method" : "POST",
"bodyPatterns" : [ {
"matchesJsonPath" : "$.rootItem.itemA[0].item..[?(@.fieldName=='file')]"
} ]
},
"response" : {
"status" : 200,
"body" : "{\"result\": \"success\"}",
"headers" : {
"Content-Type" : "application/json"
}
}
}
私の場合は機能しています:
ワイヤーモック:
"request": {
"urlPathPattern": "/api/authins-portail-rs/authins/inscription/infosperso",
"bodyPatterns" : [
{"matchesJsonPath" : "$[?(@.nir == '123456789')]"},
{"matchesJsonPath" : "$[?(@.nomPatronyme == 'aubert')]"},
{"matchesJsonPath" : "$[?(@.prenoms == 'christian')]"},
{"matchesJsonPath" : "$[?(@.dateNaissance == '01/09/1952')]"}
],
"method": "POST"
}
Json:
{
"nir": "123456789",
"nomPatronyme": "aubert",
"prenoms": "christian",
"dateNaissance": "01/09/1952"
}
ダブルドット演算子(再帰)で試してください$ .. params [?(@。clientVersion == "1")]