Ethnam+PHPUnitでAppManagerのユニットテストをしたい日記

Hello_HelloManagerTest

 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)

 最低限のことはできたので満足して終了。

Ethna×PHP (LLフレームワークBOOKS)
藤本 真樹 一井 崇 鶴岡 直也 新井 啓太
技術評論社
売り上げランキング: 603,973

この本が出た頃がEthnaの絶頂期でしたね(過去形)

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です