はじめに
Laravel のバリデーションクラスであるフォームリクエストをユニットテストするためのノウハウ – oki2a24 のリファクタリングを行いました。
PHPUnit のデータプロバイダを利用して、重複をできるだけ取り除いた内容となります。
本投稿での Laravel 等のバージョンです。
$ php artisan --version
Laravel Framework 6.20.30
$
$ composer show | grep phpunit/phpunit
phpunit/phpunit 9.5.7 The PHP Unit Testing framework.
$
まとめ
- データプロバイダ – 2. PHPUnit 用のテストの書き方 — PHPUnit latest Manual
- データプロバイダのデートとしてファクトリを使用して DB データを生成する場合は、データプロバイダを利用するのは難しい。データプロバイダメソッド内のファクトリメソッドで DB レコードとそのモデルデータを用意しても、それを利用するテストメソッドの前に DB レコードは削除されてしまうため。具体的には、テストはデータプロバイダメソッドの実行後に、
refreshDatabase()
を実行し、次にデータプロバイダを利用するテストメソッドを実行するため。
- データプロバイダを利用するテストメソッドを、別のテストメソッドから呼び出すことは可能だった。テスト失敗した場合も、期待通り別のテストメソッドで失敗したと出力されていた。