概要
WireMockのレスポンスマッピングファイルの書き方についてまとめます。
root
┣ __files
┃ ┗ response.json
┃
┗ mappings
┗ 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": {
"url": "/api/12345",
"method": "GET"
},
:
}
上記の場合は、urlのvalueに定義された /api/12345 にアクセスした時のみレスポンスが返されます。
クエリパラメータなどをつけてアクセスした場合は一致しません。
urlPattern
{
"request": {
"urlPattern": "/api/(\\d{5})",
"method": "GET"
},
:
}
この場合、URL内に正規表現が使用できます。
/api/12345 や /api/98765 にアクセスした場合にレスポンスが返されます。
クエリパラメータなどをつけてアクセスした場合は一致しません。
urlPath
{
"request": {
"urlPath": "/api/sample",
"method": "GET"
},
:
}
この場合は、 /api/sample にアクセスした場合とクエリパラメータをつけた場合にレスポンスが返されます。
/api/sample?parameter=1234 といった場合でもレスポンスが返されます。
urlPathPattern
{
"request": {
"urlPathPattern": "/api/(\\d{5})/sample",
"method": "GET"
},
:
}
この場合は、URL内に正規表現が使用できます。
/api/12345/sample にアクセスした場合とクエリパラメータをつけた場合にレスポンスが返されます。
/api/12345/sample?parameter=1234 といった場合でもレスポンスが返されます。
urlPathTemplate
{
"request": {
"urlPathPattern": "/api/{id}/sample",
"method": "GET",
"pathParameters": {
"id": {
"equalTo": "12345"
}
}
},
:
}
この場合は、URL内のパスパラメータを別で定義することができます。
/api/12345/sample のようにアクセスした場合にレスポンスが返されます。
PathParameters を定義しないことで、idには特に制限をしないことも可能です。
(定義しない場合、一部記号などを入力するとエラーになることもあります。)
パラメータの一致条件の書き方
pathParameters 、queryParameters
pathParametersやqueryParametersの一致条件は以下の通りです。
| Key | Value |
|---|---|
| equalTo | 完全一致する値 |
| matches | 正規表現で一致する値 |
| doesNotMatch | 正規表現で一致しない値 |
| contains | 部分一致する値 |
| doesNotContain | 含まない値 |
bodyPatterns
POSTなどのリクエストボディを定義する場合は、bodyPatternsを使用します。
| Key | Value |
|---|---|
| equalToJson | 完全一致するJSON |
| matchesJsonPath | "$.name" などのようにJSON内に存在するキー |
AND条件やOR条件
AND条件やOR条件以下のように記述します。
{
"request": {
"urlPathPattern": "/api/{id}/sample",
"method": "GET",
"pathParameters": {
"id": {
"or" [
{
"equalTo": "12345"
},
{
"equalTo": "45678"
}
]
}
}
},
:
}
組み合わせによってうまくアクセスできないこともありますが、基本的なことは上記の通りです。