CircleCI2.0対応版もあります https://qiita.com/kazuhei/items/29ee2c3cbd5960814959
概要
LaravelのMySQLを使ったテストをCircleCI上で実行します。
CircleCI上でマイグレートとシーディングを行い、
テストデータが入った状態でテストを実行できるようにします。
やることは
- Laravel側にCircleCI用のデータベース設定を追加
- circle.ymlにテスト用の設定を追加
の2つです。
Laravel側にCircleCI用のデータベース設定を追加
CircleCIのMySQLの設定のデフォルト値は
設定項目 | 値 |
---|---|
database | circle_test |
username | ubuntu |
password | 空文字 |
というふうにあらかじめ用意されているので、特に問題なければ以下のようにします。
config/database.php
'connections' => [
'circle_test' => [
'driver' => 'mysql',
'host' => '127.0.0.1',
'port' => '3306',
'database' => 'circle_test',
'username' => 'ubuntu',
'password' => '',
'charset' => 'utf8mb4',
'collation' => 'utf8mb4_unicode_ci',
'prefix' => '',
'strict' => true,
'engine' => null,
],
]
circle.ymlにテスト用の設定を追加
circle.ymlに設定を追加して、マイグレーションとシーディングができるようにしていきます。
最終的には
circle.yml
machine:
php:
version: 7.1.0
environment:
DB_CONNECTION: circle_test
APP_ENV: testing
services:
- mysql
database:
override:
- "php artisan migrate"
- "php artisan db:seed"
```
こんな感じになります。
## 環境変数を追加
```yaml:circle.yml
machine:
php:
version: 7.1.0
environment:
DB_CONNECTION: circle_test
APP_ENV: testing
services:
- mysql
```
DB_CONNECTIONに先ほどLaravelの方で設定したcircle_testを指定します
APP_ENVにtestingを指定しています。
これを指定しないとFeatureテストでPOSTをテストする時にCSRFトークンのチェックでテストがコケます。
## マイグレートとシーディングを実行
```yaml:circle.yml
database:
override:
- "php artisan migrate"
- "php artisan db:seed"
```
見たままです。