symfonyのunitテストでちょっと楽する
symfonyのunitテストでデータの初期化とか定型のコード書くのが面倒だったので、データのロードとか初期化をいい感じにやってくれるクラスつくってみた。
<?php
// /path/to/symfony_root/test/bootstrap/myTest.php
require_once 'unit.php';
class MyTest {
public $con;
public $limeTest;
public function __construct($plan = null) {
$configuration = ProjectConfiguration::getApplicationConfiguration(
'front', 'test', true);
new sfDatabaseManager($configuration);
$this->limeTest = new lime_test($plan);
$this->con = Propel::getConnection();
$this->con->beginTransaction();
}
public function loadData($file = null) {
$fixture = sfConfig::get('sf_test_dir').'/fixtures';
if ($file) {
$fixture .= "/$file";
}
$loader = new sfPropelData();
$loader->loadData($fixture);
}
public function __destruct() {
$this->con->rollBack();
}
}
実際テストするときはかんじに書く。
<?php
require_once dirname(__FILE__).'/../bootstrap/myTest.php';
$myTest = new MyTest(1);
$myTest->loadData();
$t = $myTest->limeTest;
$t->ok(1);
デストラクタでrollbackしてるのでテストが終わったらDBの状態を元に戻してくれるところがポイント。ただしInnoDBじゃないとダメです。
- Prev Entry:ターミナルからMacVimでファイルを開く
- Next Entry:ウェブサイトを反転させるbookmarklet