🐺
WireMockでネストしたRequestBodyのmatch
はじめに
wiremockでネストしたRequestBodyに対してmatchさせる方法を探しました。
結論
wiremockのmatchesJsonPathでmatchさせる。
{
"request": {
...
"bodyPatterns" : [ {
"matchesJsonPath" : {
"expression": "$..todoItem",
"contains": "wash"
}
} ]
...
},
...
}
matchesJsonPathは別のmatcherと組み合わせることが可能です。
部分文字列はJsonPathとcontainsにより実現しています。
expression
matchさせたいKey名をJsonPathで指定する
ネストした構造のJsonPath指定
valueに対してmatchする
{
"depth1": [
{
"depth2": [
{
"depth3": [
{
"value": "hoge"
}
]
}
]
},
{
"depth2": [
{
"depth3": [
{
"value": "fuga"
}
]
}
]
}
]
}
matchesJsonPath
{
"request": {
...
"bodyPatterns": [{
"matchesJsonPath": {
"expression": "$..[?(@.value)]",
"contains": "hoge"
}
}]
...
}
...
}
JsonPath構文は下記ドキュメントを参考にしています。
contains
Substring(部分文字列)で評価される
Discussion