1. Home
  2. Archive
  3. symfonyのunitテストでちょっと楽する

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じゃないとダメです。

コメントフォーム

スパムがひどいので一時的にコメントフォーム閉じます。ゴメンナサイ。