goenv がオススメです。
Docker及びDocker Composeを準備してください。
https://www.docker.com/get-started
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では--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
- skeemaをインストール
make tools
- マイグレート
$ skeema push local -p
Enter password: (何も入力せずにEnter)
Spotify Web APIのトークンが必要です。こちら から作成してください。
作成後、 env.secret
に取得したトークンを設定してください。
$ cp env.secret.example env.secret
$ ${EDITOR} env.secret
localhost
ではクッキーを使えないので、別名を割り当てる必要があります。
$ sudo vim /etc/hosts
127.0.0.1 relaym.local # これを追加
::1 relaym.local # これを追加
$ make serve
repositoryやspotifyインタフェースのモックを生成して、テスタビリティの向上を図ります。
- mockgen をインストール
$ make tools
- インターフェースに
go generate
の記述をする。
//go:generate mockgen -source=$GOFILE -destination=../mock_$GOPACKAGE/$GOFILE
package repository
// ...
- go generateする
$ make generate
$ make test
SpotifyのAPIを実体に叩くことが出来ます。CIで実行することは想定しておらず、ローカルでデバッグするための機能として存在しています。
env.secret
のSPOTIFY_REFRESH_TOKEN_FOR_TEST
にリフレッシュトークンをセットする。(/loginを叩いてDBから取得するのが簡単です。)make integration-test
Spotifyのクライアントを起動しているかどうかや再生しているかどうかで、テストが通るかどうかは変わるので、テストが落ちるのは仕様です。
ローカルで起動したAPIサーバに対して、簡単なシナリオを元にしたAPIリクエストを送信することができます。
make serve
- Chromeで http://relaym.local:8080/api/v3/login にアクセスしてログイン処理を実行
- http://relaym.local:8080/* を開いた状態でChrome Dev Consoleに e2e.jsを貼り付ける。