1
2

More than 1 year has passed since last update.

DockerとWireMockで手軽に便利なモックを立てる

Last updated at Posted at 2021-10-01

何故WireMockにしたか

もともとスマホアプリ開発のAPI呼び出しのユニットテスト用にモックが欲しかった。
AndoroidとiOSのユニットテスト環境にモック用のライブラリを入れるのも良いのだが、
ローカル環境にモックのサーバーを立ててしまえば、両方のアプリから使えるので楽だと踏んだ。

しかもWireMockはDockerのイメージも用意されているので、
自分の環境を汚さずに手軽に入れらるのもいいなと思った。

環境

Windows10
Docker Desktop 3.3.1.6

手順

基本的には @mikankitten さんのWireMockをローカル環境に導入する を参考にして進めればOK。
なので基本的な流れと詰まったところだけ記載する。

  1. Dockerでイメージ「rodolpheche/wiremock」を落としてコンテナ作成
  2. Dockerのマウント先のディレクトリにスタブの設定を書く
  3. @mikankitten さんのありがたいスクリプトでスタブを登録
  4. Dockerコンテナを再起動

詰まったところ、その① Dockerコンテナのマウント先が分からない

そもそもDockerを普段使ってない人の悩みに違いない。
メモの日々 に助けられ、下記の方法で確認出来た

「WSL起動中にエクスプローラのアドレスバーへ「\wsl$」と入力する

そして以下のパスにアクセス
\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes

なので、ファイルエクスプローラーで上記パスを叩くと、こんな感じで現れる↓
image.png

詰まったところその② URLパスでのマッチング

普段、正規表現書かない人だから困った感もある。
まあ、ハマったというほどでもないがTry&エラーでガチャガチャした。

例えば、URLで/api/GET200/ を含むアクセスにマッチさせたい場合は下記の様にする。

GET200.json
{
    "request": {
        "method": "GET",
        "urlPathPattern": "/api/GET200/([ -~]*)"
    },
    "response": {
        "status": 200,
        "headers": {
            "Content-Type": "application/json"
        }
    }
}

urlPathPatternにURLパスを指定し、
GET200/の後は「いかなる文字列も含む」という意味合いで正規表現「([ -~]*)"」を記載している。

今回はこのやり方でほぼほぼ捌けたが、他のマッチング方法については本家サイトを参考にするのが良い。

以上

まあこんなところ。
ちなみに作ったスタブがちゃんと動いているかは、
Advanced Rest ClientからHTTPリクエストして結果確認した。

このツール、GUIで直観的に使い易いので重宝している。

それでは、このへんで。

1
2
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
1
2