WEBシステムの開発をしているとAPIの呼び出しを行うことなど多々あると思います。
一般的にクライアント側でタイムアウトの設定を行い、一定時間レスポンスがない場合はエラーハンドリングを行うように実装する必要があります。
その際に開発環境でタイムアウトを再現しようとしても、呼び出し先のAPI側でレスポンス遅延させるにはどうしたらいいか?悩むことはあると思います。
今回はWireMockを用いて簡単にレスポンスの時間をコントロールする方法を紹介します。
WireMockとは
WireMockの説明やダウンロード手順などは下記記事でご紹介してますので、こちらをご参照ください。

環境
- Windows 10
- スタンドアローン版のWireMock
- WireMockはダウンロード済
フォルダ構成
まずWireMockの各フォルダの役割を説明します。
C:/WireMock ├─wiremock-jre8-standalone-2.26.3.jar ├─mappings └─__files
「mappings」・・・このリクエストがきたらこのレスポンスを返却するといったルールを記述したファイルを配置する
「__files」・・・レスポンスの内容を記述したファイルを配置する
覚えるのはこれだけでOKです。
マッピングルールの記述
結論から言うと遅延設定のやり方はmappingファイルに下記記述を加えるだけでOKです。
“fixedDelayMilliseconds”: 〇〇
具体的に作成した設定ファイルは以下の通りですので
mappingsフォルダ直下にそのまま保存してください。
timeout.json
{
"request": {
"method": "GET",
"url": "/timeout"
},
"response": {
"status": 200,
"bodyFileName": "JsonSample.json",
"headers": {
"Content-Type": "application/json"
},
"fixedDelayMilliseconds": 5000
}
}
<request>
method・・・getなのかpostなのかリクエスト形式を記述
url・・・リクエストパスの設定
<response>
status・・・返却するHTTPステータスを指定
bodyFileName・・・するレスポンスのファイル名を指定
headers・・・返却時にヘッダに付与するパラメータを設定
fixedDelayMilliseconds・・・応答時間の設定値(ms)
今回は
“fixedDelayMilliseconds”: 5000
と設定してますので、応答時に5秒遅延させることになります。
リクエストしてみる
では設定ファイルを配置したらWireMockを起動しましょう。
Postmanからさきほど指定したルール通りにリクエストします。

レスポンスは期待通り5秒以上かかってますね。

以上になります。
・Postmanは非常に便利なリクエストツールなので合わせてインストールしておきましょう。
https://yu-report.com/entry/postman
・WireMockのxmlファイルの作成方法はこちらから
https://yu-report.com/entry/wiremockxml
・WireMockのjsonファイルの作成方法はこちらから
https://yu-report.com/entry/wiremockjson
コメント