Laravel factoryでテスト用データを作成
テスト用のダミーデータを作成する際、factoryをよく使います。factoryを使ったダミーデータの作成方法は色々ありますが、今回は単一Modelのデータ作成でよく使う記述をご紹介します。
テスト用のダミーデータを作成する際、factoryをよく使います。factoryを使ったダミーデータの作成方法は色々ありますが、今回は単一Modelのデータ作成でよく使う記述をご紹介します。
LaravelではFeatureテストが簡単に行えるように、便利なテスト用メソッドが用意されています。今回はそちらを使っていてハマってしまった意図せぬ挙動について紹介します。
前回のFormRequestの入力補正を例にして、そのユニットテストを作成してみます。
phpunitは私にはもう欠かせないツールなのですが、その実行をよりビジュアルに表示してくれるツールを見つけました。その紹介です。
phpunitの実行時のオプションはいろいろあります。今回は私が便利!と思ったオプションを紹介します。
既存のDBのそれぞれのテーブルにおいて、migrationファイルやfactoryファイルが揃ったところで、phpunitのテストを作成して実行してみましょう。
既存のDBからmigrationファイルを自動作成によって、テストのために空のDBテーブルの作成が可能となりました。今度は、そこへテストデータを作成するためにfactoryが必要となります。これも自動作成しましょう。
またまたLaravelの更新の時期がやってきました。と言っても、またしても遅れての私のキャッチアップです。Laravel 6.xのバージョンは、Laravel 5.5と同様にLTSの長期サポートまでなので、バグの修正は、9/3/2021まで、セキュリティの修正は、9/3/2022までとあるので、できるならアップグレードしたいです。また、6.xのバージョンは、新サービスのサーバーレス対応のVaporでは必須ゆえに、Laravelを実行するサーバーのスケールアップに興味があるなら、なおさら頑張ってアップグレードする必要あります。
今回は、他の項目により対象の項目が必須となるかどうかのルールを紹介します。 required_if required_unless required_with required_with_all required_without required_without_all
今回は、引数にDBの情報を指定するバリデーションルールです。今回はデータベースを伴うテストなので、use RefreshDatabase;のトレイトや、factory()->create()が使用されています。 exists unique 後者の方は、会員登録では必須のバリデーションです。会員編集の方でも自分のレコードを外す引数を指定すれば使用可能です。しかし、Laravel 5.5からのRuleの登場で、よりわかりやすい形でも指定できます。これらは皆、今回のテストに含まれています。