テスト
テストケースの規約
- テストを含むPHPファイルは、 tests/TestCase/[Type] ディレクトリーに置く
- ファイル名はFooBarTest.php とする
- テストを含むクラスは Cake\TestSuite\TestCase 、 Cake\TestSuite\IntegrationTestCase または \PHPUnit\Framework\TestCase を継承する
- 他のクラス名と同様に、テストケースのクラス名はファイル名と一致させる
- テストを含むメソッド (つまり、アサーションを含むメソッド) の名前は testPublished() のように test で始める。 @test というアノテーションをメソッドに マークすることでテストメソッドとすることもできる。
テストの作成
テストコードの例
ヘルパーを作成。以下のヘルパーに対するテストを作成する。
<?php namespace App\View\Helper; use Cake\View\Helper; class ProgressHelper extends Helper { public function bar($value) { $width = round($value / 100, 2) * 100; return sprintf( '<div class="progress-container"> <div class="progress-bar" style="width: %s%%"></div> </div>', $width); } }
テストコード。
<?php namespace App\Test\TestCase\View\Helper; use App\View\Helper\ProgressHelper; use Cake\TestSuite\TestCase; use Cake\View\View; class ProgressHelperTest extends TestCase { public function setUp() { parent::setUp(); $View = new View(); $this->Progress = new ProgressHelper($View); } public function testBar() { $result = $this->Progress->bar(90); $this->assertContains('width: 90%', $result); $this->assertContains('progress-bar', $result); $result = $this->Progress->bar(33.3333333); $this->assertContains('width: 33%', $result); } }
setUp
setUpメソッドはこのテストケースクラスのメソッドが呼び出される前に毎回呼び出される。テストに必要なオブジェクトの初期化や設定を行う。
parent::setUp
TestCase::setUp() は、 Core\Configure の値をバックアップしたり、 Core\App にパスを保存したりといったいくつかの作業をしている。
アサーション
期待した結果が出力されるかどうかを検証する。assertContains()
は、ヘルパーが返した値に期待した文字列が含まれているかどうかを検証する。 TestSuite と PHPUnit で多数のアサーションメソッドが用意されている。