Tech`s Report

MENU

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

フリーエンジニア向け案件を紹介【BTCエージェント】

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

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

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

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

 

WireMockとは

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

https://yu-report.com/entry/wiremockdl

 

環境

  • 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