wiremock-jre8-standalone-2.31.0.jar で確認。
POSTでリクエストボディがjsonとのマッピングルールの基本的な書き方。一通りの書き方のサンプルは公式ドキュメント https://wiremock.org/docs/request-matching/ にある。
equalToJson
にjsonをそのまま書く。
{
"request": {
"method": "POST",
"url": "/post-sample",
"bodyPatterns" : [ {
"equalToJson" : {"first":"a", "second":"b", "list":[3,2,1]}
} ]
},
...
文字列リテラルとして指定も出来る。
...
"bodyPatterns" : [ {
"equalToJson" : "{\"first\" : \"a\",\"second\" : \"b\",\"list\" : [ 1, 2, 3 ]}",
...
デフォルトはstrictにマッチングするのでこれを弱めるオプションがある。
-
ignoreArrayOrder
- 配列の順序が違っていてもマッチングする。 -
ignoreExtraElements
-equalToJson
に無い要素が合ってもマッチングする。
...
"bodyPatterns" : [ {
"equalToJson" : "{\"first\" : \"a\",\"second\" : \"b\",\"list\" : [ 1, 2, 3 ]}",
"ignoreArrayOrder" : true,
"ignoreExtraElements" : true
} ]
},
...
プレースホルダーで任意の値でマッチングできる。以下の${json-unit.any-string}
は任意の文字列にマッチングする。https://github.com/lukas-krecan/JsonUnit#typeplc にあるとおり、型ごとにいくつか用意されている。
...
"bodyPatterns" : [ {
"equalToJson" : {"first":"${json-unit.any-string}", "second":"b", "list":[3,2,1]},
...
なお、JSONのマッチングは https://github.com/lukas-krecan/JsonUnit を使ってる、と書いてあるので、もっと複雑な事をしたい場合はこっちのドキュメントとかソースコードとか見るのが良いと思う。
あと、ドキュメントにもある通りJSON Pathでのマッチングもできる。こちらも複雑なマッチングの式が書けるので、場合によって使い分けると思われる。