
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 という名前のテストを作成。
< ?php require_once dirname(__FILE__) . '/../app/Hello_Controller.php'; class Hello_HelloManagerTest extends PHPUnit_Framework_TestCase { protected $controller; protected $manager; protected function setUp() { $this->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の絶頂期でしたね(過去形)