kawabatas技術ブログ

試してみたことを書いていきます

Golang でモックサーバーを作った

概要

Go で REST API 用のモックサーバーを作りました。

kawabatas/gomock

  • バイナリの実行で、モックサーバーが起動する
  • handler をパッケージにすることで、テストでも使える

ということを意識しました。

gostub/gostub(紹介記事)を参考にさせていただき、rakyll/statik でダミーデータの json ファイルもバイナリに加えれるようにしました。

汎用的に使えるかも?と思ったり。

使い方

README.md に記載の通りですが、

clone して、statik で ダミーデータの json ファイルを Go バイナリ化し、go build すればモックサーバーのできあがりです。

あとはそれを起動して、REST API を叩くなり、

handler パッケージをテストで利用するなり、できます。

ダミーデータの追加方法

mock_data/ にダミーデータのレスポンスを追加して、mock_data/routes.json に呼び出し方を追加すればOKです。

statik -src=$PWD/mock_dataでダミーデータの json ファイルの Go バイナリの更新も忘れずに)

header と param で呼び出すダミーデータの json を指定できます。

[kawabatas@MBA ~]$ curl http://localhost:8888/hello
{
  "message": "hello default"
}
[kawabatas@MBA ~]$ curl -H 'X-FOO:BAR' http://localhost:8888/hello
{
  "message": "hello with header"
}
[kawabatas@MBA ~]$ curl http://localhost:8888/hello?foo=bar
{
  "message": "hello with param"
}
[kawabatas@MBA ~]$ curl -X POST http://localhost:8888/hello -d '{"foo":"bar"}'
{
  "message": "hello with param"
}

説明動画

youtu.be