以前CakePHP2系のテストは書きましたが、3系は若干仕様が違いますので、3について書こうと思います。例によってエントリーレベルですが。
準備
phpunit
phpunitがインストールされているかをチェック。ディフォルトだとインストールされているはずですが。
インストールされていれば vendor/bin/phpunitがあるはず。ない場合はcomposer.jsonに足してcomposer経由でインストールをする。
下記のように記述してあげればOKです。
1 2 3 |
"require-dev": { "phpunit/phpunit": "*" } |
テスト用のDB
app.phpでtest用のデータベースがしっかり設定されているか。
実際につながっているサーバーとテストでつかうサーバーは設定で必ず分けましょう。
Fixtureとは
一般的にデータベースを使わないシステムはあまりありませんが、データベースを伴うテストは実行が難しいことも多いです。
難しい理由としては前提となる状態を常に保存しておくのが困難です。そのため一時的にテストのために使うデータベースのような状態をFixtureといいます。これにより、常にデータベースを目的の状態にしておくことができます。
bakeで自動生成
ゼロからテストファイルを作らなくても、bakeで自動生成してあげればテストのファイルも自動で作られます。よくわからないうちはこれを実行したり、いじるのが一番楽でしょう。
実行
上記の設定で問題なければ
1 |
vendor/bin/phpunit |
でテストが通るはず。controller→model→viewと実行されていきます。
一部のテストケースだけ実行したい場合は下記のように入力すればOK。
1 |
vendor/bin/phpunit tests/TestCase/Controller/CustomersControllerTest.php(テストケースのファイル名の名前) |
[…] 詳しくはここを。 […]
[…] CakePHP3系でのテスト処理 CakePHP3でのコレクションに関して(厳密にはテストではないですが、デバッグに便利) […]