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');
なんだかもう少しな気がしてきたよ。