概要
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"
}
]
}
}
},
:
}
組み合わせによってうまくアクセスできないこともありますが、基本的なことは上記の通りです。