何故WireMockにしたか
もともとスマホアプリ開発のAPI呼び出しのユニットテスト用にモックが欲しかった。
AndoroidとiOSのユニットテスト環境にモック用のライブラリを入れるのも良いのだが、
ローカル環境にモックのサーバーを立ててしまえば、両方のアプリから使えるので楽だと踏んだ。
しかもWireMockはDockerのイメージも用意されているので、
自分の環境を汚さずに手軽に入れらるのもいいなと思った。
環境
Windows10
Docker Desktop 3.3.1.6
手順
基本的には @mikankitten さんのWireMockをローカル環境に導入する を参考にして進めればOK。
なので基本的な流れと詰まったところだけ記載する。
- Dockerでイメージ「rodolpheche/wiremock」を落としてコンテナ作成
- Dockerのマウント先のディレクトリにスタブの設定を書く
- @mikankitten さんのありがたいスクリプトでスタブを登録
- Dockerコンテナを再起動
詰まったところ、その① Dockerコンテナのマウント先が分からない
そもそもDockerを普段使ってない人の悩みに違いない。
メモの日々 に助けられ、下記の方法で確認出来た
「WSL起動中にエクスプローラのアドレスバーへ「\wsl$」と入力する
そして以下のパスにアクセス
\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes
なので、ファイルエクスプローラーで上記パスを叩くと、こんな感じで現れる↓
詰まったところその② URLパスでのマッチング
普段、正規表現書かない人だから困った感もある。
まあ、ハマったというほどでもないがTry&エラーでガチャガチャした。
例えば、URLで/api/GET200/ を含むアクセスにマッチさせたい場合は下記の様にする。
{
"request": {
"method": "GET",
"urlPathPattern": "/api/GET200/([ -~]*)"
},
"response": {
"status": 200,
"headers": {
"Content-Type": "application/json"
}
}
}
urlPathPatternにURLパスを指定し、
GET200/の後は「いかなる文字列も含む」という意味合いで正規表現「([ -~]*)"」を記載している。
今回はこのやり方でほぼほぼ捌けたが、他のマッチング方法については本家サイトを参考にするのが良い。
以上
まあこんなところ。
ちなみに作ったスタブがちゃんと動いているかは、
Advanced Rest ClientからHTTPリクエストして結果確認した。
このツール、GUIで直観的に使い易いので重宝している。
それでは、このへんで。