背景
マイクロサービスにより構築された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サーバーが起動する
WireMock API登録
レスポンスマッピングAPIベース
※Chrome Postmanを使用して検証を実施
特定のリクエストに対して指定したレスポンスを返す設定を行う。
なお、マッピングにはWireMockの/__admin/mappings
APIを使用する。
POST : /__admin/mappings
- /hello
のPOST APIを定義する
登録された結果が返却される
設定した結果が返却される。
登録されたAPIはwiremock-standalone-2.12.0.jarと同一階層のmappingsに保存される。
- mapping配下
レスポンスマッピング fileベース
- wiremock-standalone-2.12.0.jarと同一階層のmappingsにjson fileとして配置する。
{ "scenarioName": "findUser", "request": { "url": "/user/find", "method": "GET" }, "response": { "status": 200, "body": "Taro", "headers": { "Content-Type": "application/json" } } }
WireMock API確認
- WireMockのAPIについては公式のAPI docsを確認する、またはWireMockを起動後にブラウザで
__admin/docs
を開きSwagger UIの管理画面で確認できる。