スタブとは
プログラムのモジュールをテストする際、そのモジュールが呼び出す下位モジュールの代わりに用いる代用品のことです。下位モジュールが未完成でも代わりにスタブを用いることでテストが可能になります。よくモックと間違えられることがありますが、モックとは別物です。
本記事では、外部のAPIを利用するシステムを構築する際に、そのAPIをNginxとDockerfileを利用して簡単にスタブ化する方法を紹介します。なお、APIのURLの例として以下2通りを利用します。
- /api/v1/users/
- /api/v1/companys/
スタブファイルの作成
「/api/v1/users/」というURLで以下のようなレスポンスを返却するAPIのスタブファイルを作成します。
[
{
"id":"1",
"first_name":"Test",
"last_name":"Ichiro"
},
{
"id":"2",
"first_name":"Test",
"last_name":"Jiro"
}
]
次に「/api/v1/companys/」というURLで以下のようなレスポンスを返却するAPIのスタブファイルも作成します。
[
{
"id":"1",
"name":"Company1"
},
{
"id":"2",
"first_name":"Company2"
}
]
Nginxのdefault.confの作成
DockerのNginx公式イメージで作成するのでdefault.confになります。設定は以下の通りです。
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
# ユーザー情報取得API
location /api/v1/users/ {
root /usr/share/nginx/json;
index users.json;
}
# 企業情報取得API
location /api/v1/companys/ {
root /usr/share/nginx/json;
index companys.json;
}
}
冒頭で紹介した、2つのURLのlocationを記載します。設定の詳細は「Nginxの静的コンテンツの提供」を参照ください。
Dockerfileの作成
Dockerfileを以下の通り作成します。
FROM nginx:latest
ADD ./conf.d/default.conf /etc/nginx/conf.d
ADD ./json /usr/share/nginx/json/
作成した各ファイルのディレクトリ構成
ここまでで作成したファイルのディレクトリ構成は以下の通りにします。
├─api-stub ※作業ディレクトリ
│ │ Dockerfile
│ │
│ ├─conf.d
│ │ default.conf
│ │
│ └─json
│ └─api
│ └─v1
│ ├─companys
│ │ companys.json
│ │
│ └─users
│ users.json
Dockerイメージの作成
docker build -t api-stub-image .
作成したイメージからコンテナの作成・起動
docker run --name api-stub -d -p 8080:80 api-stub-image
これで、スタブが出来上がりました。
動作確認
以下のように、各APIで作成したスタブファイルが返却されれば成功です。
※1行目と2行目は、Chrome拡張のJSON Viewerが付けてるメタ情報だと思うので無視してください。
以上です。