Edited at

WireMockサーバーの導入手順

More than 1 year has passed since last update.


背景

マイクロサービスにより構築された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


user.json

   {

"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/