EthnaでSimpleTest(1)

まずはSimpleTestを使うための準備

etc/(app-id)-ini.phpのdebugフラグをtrueにする

'debug' => true,

テストスクリプトのスケルトンを作成してみて
どんなんができるんか確認。

まずは、アクションとフォーム用のスケルトン作成!

# ethna add-action-test index
file generated [/・・・/skel/skel.action_test.php -> /・・・/app/action/IndexTest.php]
action test(s) successfully created [/・・・/app/action/IndexTest.php]

ちょっと色々調べても「SimpleTestのドキュメントを読んで」とかしか書いてないねんけど。。。
でも、まぁ、やってみて気がついたこととかをメモとして。。。

ケルトンを作ると、classが2個できるみたいで
(app_id)_Form_Index_TestCaseがアクションフォーム用のテストクラス、
(app_id)_Action_Index_TestCaseのアクション用のテストクラスらしい。

今回のテスト対象のindex.phpはアクションしか使ってないので
まずは(app_id)_Action_Index_TestCaseから使ってみますか!

ざっとスケルトンで作られたソースを見てみる

/**
* @access private
* @var string アクション名
*/
var $action_name = 'index';

/**
* テストの初期化
*
* @access public
*/
function setUp()
{
$this->createActionForm(); // アクションフォームの作成
$this->createActionClass(); // アクションクラスの作成

$this->session->start(); // セッションの開始
}

/**
* テストの後始末
*
* @access public
*/
function tearDown()
{
$this->session->destroy(); // セッションの破棄
}

/**
* indexアクションクラスのサンプルテストケース
*
* @access public
*/
/*
function test_actionSample()
{
// フォームの設定
$this->af->set('id', 1);

// indexアクション実行前の認証処理
$forward_name = $this->ac->authenticate();
$this->assertNull($forward_name);

// indexアクションの前処理
$forward_name = $this->ac->prepare();
$this->assertNull($forward_name);

// indexアクションの実装
$forward_name = $this->ac->perform();
$this->assertEqual($forward_name, 'index');
}
*/


この中身自体はSimpleTestの実装に乗っ取っているみたいで
setup()がテスト前処理、tearDown()がテスト後処理の関数となってるみたい。

で、test_actionSample()としてコメントアウトされてるところが
実際のテストコードを書く部分になるみたいや。

んじゃあ、簡単にテストコードを書いてみる。
まずは、テストサンプルで絶対Trueになるコードを。

function test_actionIndex(){
$this->assertTrue(true);
}

んで、unittest.phpへアクセスしてみたら、
trueで帰って来てんで!って感じで1passになってるんで、出だしは好調やな。。。


以下、OKの画面を参考までに。

んで、action自体は前処理部分の

$this->createActionForm(); // アクションフォームの作成

で作成されているみたいなので、
とりあえず、actionが作成されているかどうかはスケルトンで実装されている

// indexアクションの実装
$forward_name = $this->ac->perform();
$this->assertEqual($forward_name, 'index');

で確認できるみたいや。

これも実装したら、unittest.phpでpassできていることが確認できたから
あとは個別の確認をどないしていくか、また見て考えんといかん。