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できていることが確認できたから
あとは個別の確認をどないしていくか、また見て考えんといかん。