CakePHP2.x系で公式マニュアルに従って、フレームワークで用意されたテストツールを使用してみました。その手順などを記録しておきます。
確認環境 CakePHP2.10.2
公式マニュアル
https://book.cakephp.org/2.0/ja/development/testing.html
公式マニュアルに従ってやれば間違いないです。
テストDBの設定
テストツールがさわるDBの設定です。特殊な書き方など不要であらかじめフレームワーク側で用意してくれていますので使わなきゃ損です。ローカルならローカルDBそのまま設定すれば良いと思います。
app/Config/database.php
public $test = array( 'datasource' => 'Database/Mysql', 'persistent' => false, 'host' => 'dbhost', 'login' => 'dblogin', 'password' => 'dbpassword', 'database' => 'test_database' );
テストケースの作成
app/Test/Case/View/Helper/ProgressHelperTest.php
<?php
App::uses('Controller', 'Controller');
App::uses('View', 'View');
App::uses('ProgressHelper', 'View/Helper');
class ProgressHelperTest extends CakeTestCase {
public function setUp() {
parent::setUp();
$Controller = new Controller();
$View = new View($Controller);
$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);
}
}
テスト対象の作成
app/View/Helper/ProgressHelper.php
<?php
class ProgressHelper extends AppHelper {
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);
}
}
テストの実行
コマンド実行(xampp環境だとこう)
php app\Console\cake.php test Test\Case\View\Helper\ProgressHelperTest.php
ブラウザ
localhost/test.php
webrootの中にtest.phpというファイルが最初からあるのでそれです。
自分でいつもtest.phpとか作ってると紛らわしいですね・・。
テスト実行後の結果画面でコードカバレッジも確認可能。設定は下に記載
コードカバレッジの確認
xdebugのインストール
xamppだとphp.iniの以下コメント解除するだけ
;zend_extension = "C:\xampp\php\ext\php_xdebug.dll" ↓ zend_extension = "C:\xampp\php\ext\php_xdebug.dll"
php -m でxdebugが表示されればOK
という感じであとはテストコードを書くだけでした・・・。(それが大変

