
Ethna の後継プロジェクトとして DQNEO さんが開発している Ethnam というプロジェクトがあり、Ethna で書かれた職場システムをメンテしている立場の私としても、将来を見据えて(PHP5.4以降ではおそらく現行のEthnaが動かないので)試しにEthnamで何か新規案件を作ってみようかな、という感じで触ってます。
それで表題の件ですが、Ethnaにはsimpletestを使ったユニットテスト機能が組み込まれていますが、Ethnamは現在そこまで至っていません。
ただ、開発するのであればやっぱりユニットテストはやりたいので、せめてモデル部分のロジックを書くAppManagerに対するテストはできるようにしたいと考えました。
また、Ethnamは将来的にはPHPUnitを導入する予定とのことなので、こちらもテストにはPHPUnitを使うことにします。
以下、試しにやったこと。
AppManagerの作成
class Hello_HelloManager extends Ethna_AppManager
{
public function hello($str)
{
return "Hello, $str";
}
}
PHPUnitの作成
Ethnaプロジェクトを置いたディレクトリに “test” というディレクトリを作り、そこに HelloManagerTest.php という名前のテストを作成。
controller = new Hello_Controller;
$this->manager = $this->controller->getBackend()->getManager('hello');
}
public function testHello()
{
$r = $this->manager->hello("World!");
$this->assertEquals($r, "Hello, World!");
}
}
?>
EthnaのAppManagerを生成するにはBackendオブジェクトが必要になるので、まずはControllerオブジェクトを生成し、それからBackendのgetManagerメソッドでAppManagerを作成、それからAppManagerのメソッドに対してテストを書いて呼び出す、という形になります。
先頭にある require_once のディレクトリは、「Ethnamのプロジェクトの置いてあるディレクトリ/app」を指定します。
テストの実行
phpunit HelloManagerTest PHPUnit 4.0.4 by Sebastian Bergmann. . Time: 47 ms, Memory: 8.00Mb OK (1 test, 1 assertion)
最低限のことはできたので満足して終了。
技術評論社
売り上げランキング: 603,973
この本が出た頃がEthnaの絶頂期でしたね(過去形)
