Skip to content

Latest commit

 

History

History
137 lines (89 loc) · 3.72 KB

development.md

File metadata and controls

137 lines (89 loc) · 3.72 KB

ローカル開発環境のセットアップ

Goの環境を準備する

goenv がオススメです。

Dockerを準備する

Docker及びDocker Composeを準備してください。

https://www.docker.com/get-started

MySQLを起動する

DockerでMySQLコンテナを起動します。

$ make run-db-local

正しくアクセスできることが確認できたらOKです。

$ mysql -u app -pPassword -h 127.0.0.1 -P 3306 -e "SELECT 1"
mysql: [Warning] Using a password on the command line interface can be insecure.
+---+
| 1 |
+---+
| 1 |
+---+

M1 Mac

M1 Macでは--platform linux/amd64を指定して事前にdocker pullを実行する必要があります。

ARM64 アーキテクチャー向けのイメージがすべて利用可能となっているわけではありません。 Intel イメージの実行には、エミュレーションのもとで--platform linux/amd64をつけて実行することが必要です。 特に mysql イメージは ARM64 向けには利用できません。 これに対する当面の対処としては mariadb イメージを利用してください。 https://matsuand.github.io/docs.docker.jp.onthefly/docker-for-mac/apple-silicon/

docker pull --platform linux/amd64 mysql:8.0

マイグレーション

  1. skeemaをインストール
make tools
  1. マイグレート
$ skeema push local -p
Enter password: (何も入力せずにEnter)

環境変数の準備

Spotify Web APIのトークンが必要です。こちら から作成してください。

作成後、 env.secret に取得したトークンを設定してください。

$ cp env.secret.example env.secret
$ ${EDITOR} env.secret

/etc/hosts を修正する

localhost ではクッキーを使えないので、別名を割り当てる必要があります。

$ sudo vim /etc/hosts

127.0.0.1 relaym.local # これを追加
::1 relaym.local # これを追加

サーバを起動する

$ make serve

モックの生成

repositoryやspotifyインタフェースのモックを生成して、テスタビリティの向上を図ります。

  1. mockgen をインストール
$ make tools
  1. インターフェースに go generate の記述をする。
//go:generate mockgen -source=$GOFILE -destination=../mock_$GOPACKAGE/$GOFILE
package repository
// ...
  1. go generateする
$ make generate

使い方

/web/handler/user_test.goを参照。

テストの実行

ユニットテスト

$ make test

インテグレーションテスト

SpotifyのAPIを実体に叩くことが出来ます。CIで実行することは想定しておらず、ローカルでデバッグするための機能として存在しています。

  1. env.secretSPOTIFY_REFRESH_TOKEN_FOR_TEST にリフレッシュトークンをセットする。(/loginを叩いてDBから取得するのが簡単です。)
  2. make integration-test

Spotifyのクライアントを起動しているかどうかや再生しているかどうかで、テストが通るかどうかは変わるので、テストが落ちるのは仕様です。

E2Eテスト

ローカルで起動したAPIサーバに対して、簡単なシナリオを元にしたAPIリクエストを送信することができます。

  1. make serve
  2. Chromeで http://relaym.local:8080/api/v3/login にアクセスしてログイン処理を実行
  3. http://relaym.local:8080/* を開いた状態でChrome Dev Consoleに e2e.jsを貼り付ける。