【WireMock】タイムアウトのテストを行う【遅延設定のやり方】

Wiremock
スポンサーリンク

WEBシステムの開発をしているとAPIの呼び出しを行うことなど多々あると思います。

一般的にクライアント側でタイムアウトの設定を行い、一定時間レスポンスがない場合はエラーハンドリングを行うように実装する必要があります。

その際に開発環境でタイムアウトを再現しようとしても、呼び出し先のAPI側でレスポンス遅延させるにはどうしたらいいか?悩むことはあると思います。

今回はWireMockを用いて簡単にレスポンスの時間をコントロールする方法を紹介します。

スポンサーリンク

WireMockとは

WireMockの説明やダウンロード手順などは下記記事でご紹介してますので、こちらをご参照ください。

WireMockのダウンロード手順・起動方法【スタブ】
Windows環境にWireMockをスダンドアローンで起動する導入する手順をまとめました。WireMockとはWireMockはHTTPモックサーバーです。特定の要求に対する返信定型文を準備することができ、まだ外部環境に接続できないと...

環境

  • 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からさきほど指定したルール通りにリクエストします。

f:id:TechnologyShare:20200811183109p:plain

レスポンスは期待通り5秒以上かかってますね。
f:id:TechnologyShare:20200811183333p:plain

以上になります。

・Postmanは非常に便利なリクエストツールなので合わせてインストールしておきましょう。
https://yu-report.com/entry/postman

・WireMockのxmlファイルの作成方法はこちらから
https://yu-report.com/entry/wiremockxml

・WireMockのjsonファイルの作成方法はこちらから
https://yu-report.com/entry/wiremockjson

コメント

タイトルとURLをコピーしました