5
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ZOZOAdvent Calendar 2023

Day 14

WireMockのレスポンスマッピングファイルの書き方まとめ

Last updated at Posted at 2023-12-13

概要

WireMockのレスポンスマッピングファイルの書き方についてまとめます。

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

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

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

request.json
{
    "request": {
        "urlPath": "/sample",
        "method": "ANY"
        "queryParameters": {
            "sample": {
                "equalTo": "WireMock"
            }
        }
        "bodyPatterns": [
            {
                "equalToJson": "{ "request_params": 4 }"
            }
        ]
    },
    "response": {
            "status": 404,
            "bodyFileName": "response.json",
            "headers": {
                    "Content-Type": "application/json"
            },
           "transformers": ["response-template"]
    }
}

request内のURLの書き方として以下の要素があります。

Key 一致条件
url 記載された値に完全一致
urlPattern 正規表現を含めて一致
urlPath 記載された値に完全一致
urlPathPattern 正規表現を含めて一致
urlPathTemplate パスパラメータを定義して一致

url

request.json
{
    "request": {
        "url": "/api/12345",
        "method": "GET"
    },
    :
}

上記の場合は、urlのvalueに定義された /api/12345 にアクセスした時のみレスポンスが返されます。
クエリパラメータなどをつけてアクセスした場合は一致しません。

urlPattern

request.json
{
    "request": {
        "urlPattern": "/api/(\\d{5})",
        "method": "GET"
    },
    :
}

この場合、URL内に正規表現が使用できます。
/api/12345/api/98765 にアクセスした場合にレスポンスが返されます。
クエリパラメータなどをつけてアクセスした場合は一致しません。

urlPath

request.json
{
    "request": {
        "urlPath": "/api/sample",
        "method": "GET"
    },
    :
}

この場合は、 /api/sample にアクセスした場合とクエリパラメータをつけた場合にレスポンスが返されます。
/api/sample?parameter=1234 といった場合でもレスポンスが返されます。

urlPathPattern

request.json
{
    "request": {
        "urlPathPattern": "/api/(\\d{5})/sample",
        "method": "GET"
    },
    :
}

この場合は、URL内に正規表現が使用できます。
/api/12345/sample にアクセスした場合とクエリパラメータをつけた場合にレスポンスが返されます。
/api/12345/sample?parameter=1234 といった場合でもレスポンスが返されます。

urlPathTemplate

request.json
{
    "request": {
        "urlPathPattern": "/api/{id}/sample",
        "method": "GET",
        "pathParameters": {
            "id": {
                "equalTo": "12345"
            }
        }
    },
    :
}

この場合は、URL内のパスパラメータを別で定義することができます。
/api/12345/sample のようにアクセスした場合にレスポンスが返されます。
PathParameters を定義しないことで、idには特に制限をしないことも可能です。
(定義しない場合、一部記号などを入力するとエラーになることもあります。)

パラメータの一致条件の書き方

pathParameters 、queryParameters

pathParametersqueryParametersの一致条件は以下の通りです。

Key Value 
equalTo 完全一致する値
matches 正規表現で一致する値
doesNotMatch 正規表現で一致しない値
contains 部分一致する値
doesNotContain 含まない値

bodyPatterns

POSTなどのリクエストボディを定義する場合は、bodyPatternsを使用します。

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

AND条件やOR条件

AND条件やOR条件以下のように記述します。

request.json
{
    "request": {
        "urlPathPattern": "/api/{id}/sample",
        "method": "GET",
        "pathParameters": {
            "id": {
                "or" [
                    {
                        "equalTo": "12345"
                    },
                    {
                        "equalTo": "45678"
                    }
                ]
            }
        }
    },
    :
}

組み合わせによってうまくアクセスできないこともありますが、基本的なことは上記の通りです。

5
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?