SRE兼スクラムマスターのブログ

チーム開発が好きなエンジニアブログです。検証した技術やチームの取り組みを書いていきます。

WireMock サーバーの導入手順

背景

マイクロサービスにより構築されたwebアプリケーションのテストコードではサービス間の通信が発生するケースがある。今回はサービス間の通信が発生するテストの実装を実装するためmockツールを検証したので導入手順を残しておく。

利用ツール

WireMock thoughtworksのTechnology Radarでも紹介されており、この1年間でも進化が著しいとのことなので、さっそく試してみる。

WireMock

HTTPベースのAPIのシミュレータ、mockサーバー。 http://wiremock.org/ https://github.com/tomakehurst/wiremock

WireMockの起動

WireMockはjarファイルで提供されており、起動についてはこれを実行する。 http://repo1.maven.org/maven2/com/github/tomakehurst/wiremock-standalone/2.17.0/wiremock-standalone-2.17.0.jar

$java -jar wiremock-standalone-2.12.0.jar

http://localhost:8080でmockサーバーが起動する

image.png

WireMock API登録

レスポンスマッピングAPIベース

Chrome Postmanを使用して検証を実施 特定のリクエストに対して指定したレスポンスを返す設定を行う。 なお、マッピングにはWireMockの/__admin/mappingsAPIを使用する。 POST : /__admin/mappings - /helloのPOST APIを定義する image.png

  • 登録された結果が返却される image.png

  • 設定した結果が返却される。 image.png

  • 登録されたAPIはwiremock-standalone-2.12.0.jarと同一階層のmappingsに保存される。 image.png

  • mapping配下 image.png

レスポンスマッピング fileベース

  • wiremock-standalone-2.12.0.jarと同一階層のmappingsにjson fileとして配置する。 image.png
   {
    "scenarioName": "findUser",
    "request": {
        "url": "/user/find",
        "method": "GET"
    },
    "response": {
        "status": 200,
        "body": "Taro",
        "headers": {
            "Content-Type": "application/json"
        }
    }
}
  • __admin/mappings/reset APIでWireMockの定義を更新する。
  • APIを呼び出しを行うと登録されていることが確認できる。 image.png

WireMock API確認

  • WireMockのAPIについては公式のAPI docsを確認する、またはWireMockを起動後にブラウザで__admin/docsを開きSwagger UIの管理画面で確認できる。 image.png

関連

参考文献

http://wiremock.org/docs/running-standalone/