16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

WireMockサーバーの導入手順

Last updated at Posted at 2018-05-23

背景

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

関連

参考文献

16
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
13

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?