LoginSignup
1
1

More than 3 years have passed since last update.

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

Last updated at Posted at 2020-12-30

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

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

  • 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/ 配下に置かれます。

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

こんな感じでズラッと出てきます。
Screenshot 2020-12-30 18.22.26.png

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

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

Screenshot 2020-12-30 18.22.58.png

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

1
1
0

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
1
1