Larevel 7.x で自動テストをするための予備知識メモ


わからないなりに調べたことを備忘録として残します。

▼ 現時点の理解度はこんなもん

  • Laravel の処理は追えるようになったぐらい。でも自動テストはよくわからない
  • Laravel にはPHPUnit が入っているらしい。ということでPHPUnit の公式ドキュメントを読みつつ実行してみた
  • アノテーションやデータプロバイダの使い方はなんとなくわかった

FeatureTest と UnitTest の違い

  • FeatureTest :コードの幅広い範囲が対象。1つのHTTP リクエスト単位の動きをテストするイメージ。
  • UnitTest :クラスが対象。クラス内のメソッドひとつひとつに対応するテストを書くイメージ。

コマンド

テストファイル生成

「UserTest」というクラスを作りたい場合のコマンドです。

# Feature ディレクトリにテストを生成する
php artisan make:test UserTest
# Unit ディレクトリにテストを生成する
php artisan make:test UserTest --unit

DB マイグレーション生成

生成されたマイグレーションは database/migrations/ 配下に置かれます。

※ まだアウトプットできるほど理解が深まっていないので、公式ドキュメントのリンクを貼っておきます
 データベース:マイグレーション 7.x Laravel

DB マイグレーション実行

# .env.testing のenv ファイルを読むためのオプションを付けている
php artisan migrate --env=testing

Seeder 作成

「TestSeeder」というSeeder クラスを生成したい場合のコマンドです。
生成されたSeeder クラスは database/seeds/ 配下に置かれます。

php artisan make:seeder TestSeeder

生成されたSeeder クラス内で投入したいテストデータを定義します。

Composer のオートローダ再生成

ファイルを追加・変更した場合に自動読み込みをし直すため、実行します。

composer dump-autoload

テスト用データ生成 (Seeder の実行)

データベースに初期値を入れるため、Seeder を実行します。

# 「TestSeeder」を個別に実行したい場合のオプションを付けている
php artisan db:seed --class=TestSeeder

キャッシュクリア関連

テスト実行前にやっておきます。
API の場合は以下のみで問題なし。ビューを使っている場合はビュー系のクリアコマンドもやった方がいいかも ( view:clear )

# コンパイルされたクラスファイルを削除する
php artisan clear-compiled

# フレームワークのブートストラップファイルをキャッシュする
php artisan optimize

# キャッシュファイルを作成して設定の読み込みを高速化
php artisan config:cache

テストファイル実行コマンド

「UserTest」というクラスを実行したい場合のコマンドです。

# .env.testing のenv ファイルを読むためのオプションを付けている
php artisan test --env=testing tests/Feature/UserTest

[おまけ] artisan コマンドが思い出せないとき

# 一覧を表示
php artisan list | less

こんな感じでズラッと出てきます。

help [調べたいコマンド] でくわしく調べることもできます。

# [make:migration] を調べたい場合
php artisan help make:migration

くりかえし読み返すリスト