[メモ]今日のMyNETS2でCIUnit

MyNETS2

modules以下のmodel,library,helperのテストが、CIUnitでできるようになりました。
modules以下のControllerとviewはまだphpunitが実行できる状態にまで辿りつけていません。

adminモジュールのModel_adminで、少しはまりました。

$this->_user_id = $this->CI->session->userdata('user_id');

の処理を通過させるために、setUp()の中で、次のコードの記入が必要でした。

adminモジュールのModel_adminの31行目
$this->CI->session->userdata(‘user_id’);で、user_idを渡している箇所のために、記載。
ひょっとしたらsessionではなく違うカタチでuser_idを渡せれば、もっと良いのかも。

$this->CI->load->file(APPPATH.'libraries/session/MYNETS_Session.php');
$this->CI->session = new MYNETS_Session;

実行をすると次のように表示されます。
Warningは出ますが、テストは実行できます。

$ phpunit testSomeModel.php 

PHPUnit 3.3.16 by Sebastian Bergmann.

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">

<h4>A PHP Error was encountered</h4>

<p>Severity: Warning</p>
<p>Message:  Cannot modify header information - headers already sent by (output started at /usr/share/pear/PHPUnit/Util/Printer.php:168)</p>
<p>Filename: libraries/Session.php</p>
<p>Line Number: 663</p>

</div>.

Time: 0 seconds

OK (1 test, 0 assertions)

追記:2009.06.12 3:19
modules以下のcontrollerはとりあえず諦めようかなという気分です。
APPPATH.controller/以下のcontrotterもOUTPUTがあるかどうかのテストだけみたいだし・・・(言い訳)

modulesのmodelのテストで、

$this->_user_id = $this->CI->session->userdata('user_id');

が使われている場合の処理について、前回のやり方だと、AllTests.phpの実行時にエラーが発生するので、次のように修正。

if(!isset($this->CI->session)){
    $this->CI->load->file(APPPATH.'libraries/session/MYNETS_Session.php');
    $this->CI->session = new MYNETS_Session;
}
$this->CI->session->userdata('1');

なんだかもう少しな気がしてきたよ。