CakePHPはPHPUnitによる自動テストが導入できます。
PHPUnitは以下のコマンドでインストールできます。
composer require --dev phpunit/phpunit:"^5.7|^6.0"
ここで
Do not run Composer as root/super user! See https://getcomposer.org/root for details
などと警告が出ますがrootでComposerを実行していないので無視して大丈夫です。
インストールが完了したら、「config/app.php」のtestのデータベースの設定を任意に変更し、本番環境と同様なテスト用のテーブルを用意します。
** * The test connection is used during the test suite. */ 'test' => [ 'className' => 'Cake\Database\Connection', 'driver' => 'Cake\Database\Driver\Mysql', 'persistent' => false, 'host' => 'localhost', // 自分の環境に合わせて任意に変更 //'port' => 'non_standard_port_number', 'username' => 'my_app', // 自分の環境に合わせて任意に変更 'password' => 'secret', // 自分の環境に合わせて任意に変更 'database' => 'test_myapp', // 自分の環境に合わせて任意に変更、このデータベースに本番環境と同一のテーブルを用意する。 //'encoding' => 'utf8mb4', // 自分の環境に合わせて任意に変更 'timezone' => 'UTC', // 自分の環境に合わせて任意に変更 'cacheMetadata' => true, 'quoteIdentifiers' => false, 'log' => false, //'init' => ['SET GLOBAL innodb_stats_on_metadata = 0'], 'url' => env('DATABASE_TEST_URL', null), ],
設定が完了したら以下のコマンドで任意のテストケースが作成できます。今回の場合はコントローラーのテストケースです。
bin/cake bake test Controller YourController
ここで作ったテストケースは以下のコマンドで実行できます。
vendor/bin/phpunit tests/TestCase/Controller/YourControllerTest