LoginSignup
8
6

More than 5 years have passed since last update.

CircleCIでLaravelのMySQLを使ったテストを実行する

Last updated at Posted at 2017-02-27

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"

こんな感じになります。

環境変数を追加

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トークンのチェックでテストがコケます。

マイグレートとシーディングを実行

circle.yml
database:
  override:
    - "php artisan migrate"
    - "php artisan db:seed"

見たままです。

8
6
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
6