概要
/responses
配下にJSONファイル(*.json
)を置くだけで、JSONを返すMockサーバーを作成しました。(自分用)
対象者
小規模なアプリケーションのテストをしたい方、テスト環境構築にとにかく時間をかけたくない方
制限事項
とってもシンプルな構成のため、以下のケースには現状対応していません。
JSON-server
やpostman
を検討してください。または、ソースコードを自由に改変していただいて構いません。
-
200
以外のステータスコード - BodyやHeaderに応じたレスポンスの条件分岐
- JSON以外のレスポンス
ソースコード
git clone https://github.com/RyutaSato/mock-api.git
使い方
リポジトリをクローンし、以下のコマンドでDockerを起動します。
${PORT}
はListenしたいポート番号に置き換えるか、環境変数で指定します。
# cd mock-api
# PORT=8080
docker build -t mock-api .
docker run -d -p ${PORT}:8080 -v $(pwd)/responses:/responses mock-api
Windows上でPowerShellを使用している場合
# cd mock-api
# $PORT=8080
$PWD="$((pwd).Path.Replace('\', '/'))"
docker build -t mock-api .
docker run -d -p ${PORT}:8080 -v ${PWD}/responses:/responses mock-api
responses
配下はコンテナにマウントされるので、コンテナ起動中でもJSONファイルを変更することで続けてテストができます。
例
-
/v2/index
をテストしたい場合
/responses
配下にv2
ディレクトリを作成し、その配下にindex.json
を配置します。
/responses/v2/index.json
を配置します。 -
/v2
をテストしたい場合
実装方法は2つあります。-
/responses/v2.json
を配置します。 -
/responses/v2
配下に.json
を配置します。
-
-
/v2?id=123&name=json
をテストしたい場合
/responses
配下にv2_id=123&name=json.json
を配置します。
クエリパラメータは、
?
を_
に置き換えて指定できます。(ファイル名に?
が使用できないため)
-
/v2
をPOSTリクエストでテストしたい場合
/responses
配下にv2.post.json
を配置します。
メソッドは、
(path).(method).json
の形式で指定できます。(GET
のみ省略できます)
おわりに
Dockerfile
とmain.go
合わせてコード量100行程度です。
理解するのも書き換えるのも容易なので必要に応じて改変して使ってください。