5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ZOZOAdvent Calendar 2024

Day 17

WireMockのPOSTリクエストのbodyPatternsの書き方まとめ

Last updated at Posted at 2024-12-16

概要

WireMockのPOSTリクエストのbodyPatternsのJSONの書き方についてまとめます。

root
 ┣ __files
 ┃  ┗ response.json
 ┃
 ┗ mappings
    ┗ request.json <-- 該当ファイル

request.jsonの全体の書き方については、WireMockのレスポンスマッピングファイルの書き方まとめを参照してください。

POSTリクエストファイルの内容について

POSTリクエストファイルは以下のような内容で記述されます。

request.json
{
  "request": {
    "urlPath": "/sample",
    "method": "POST",
    "bodyPatterns": [
      {
        "equalToJson": "{\"element_int\": 8, \"element_str\": \"string\", \"element_bool\": true }"
      }
    ]
  },
  "response": {
    "status": 201,
    "bodyFileName": "response.json",
    "headers": {
      "Content-Type": "application/json"
    }
  }
}

この bodyPatterns についてまとめます。

Key Value
equalToJson 完全一致するJSON
matchesJsonPath "$.name" などのようにJSON内に存在するキー

equalToJsonについては、完全一致するJSONに対応します。

matchesJsonPath

matchesJsonPathに指定できる要素はパターンが複数あり、以下の通りです。

要素が一致する場合

    "bodyPatterns": [
      {
        "matchesJsonPath": "$.element_str"
      }
    ]

要素に設定されている値が一致する場合

以下の2パターンで記述できます。

パターン1

    "bodyPatterns": [
      {
        "matchesJsonPath": "$[?(@.element_int == 8)]"
      }
    ]

数値の場合 @.element_int >= 10 といった指定もできます。

パターン2

    "bodyPatterns": [
      {
        "matchesJsonPath": {
          "expression": "$.element_int",
          "equalTo": "8"
        }
      }
    ]

パターン2はequalTomatchesdoesNotMatchに変更して正規表現で一致、不一致を定義することができます。(containsdoesNotContainも使用可能)

要素数が一致する場合

    "bodyPatterns": [
      {
        "matchesJsonPath": "$[?(@.element_obj.size() == 2)]"
      }
    ]

element_obj内の要素が2つの場合に一致します。

要素が存在する場合

    "bodyPatterns": [
      {
        "matchesJsonPath": {
          "expression": "$.element_int",
          "absent": true
        }
      }
    ]

任意パラメータが指定されている場合に一致することができます。
"absent": false にした場合、nullにも一致します。
absentについては、queryParametersでも指定可能です。

時間の範囲指定をする場合

    "bodyPatterns": [
      {
        "matchesJsonPath": {
          "expression": "$.element_date",
          "and": [
            {
              "before": "2025-01-01T00:00:00"
            },
            {
              "after": "2024-01-01T00:00:00"
            }
          ]
        }
      }
    ]

上記の書き方をうまく組み合わせて条件を指定をすることで、ある程度のリクエストは網羅できそうです。

5
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?