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
コメント