live-commerceはZend Frameworkを使っているので、テストを書くにはZend_Test_PHPUnit_ControllerTestCaseを継承してsetUpでbootstrapにadmin.phpなどを設定することになるのだけど、テストからだとadmin.phpで使われてる相対パスが狂ってしまうことがある。
ということで、admin.phpの__constructで$_applicationFolderを絶対パスにしておく。
public function __construct ($configSection) { if(substr($this->_applicationFolder, 0, 1) != '/'){ $this->_applicationFolder = dirname(__FILE__).'/'.$this->_applicationFolder; } $applicationFolder = $this->_applicationFolder;
テストは次のようになる。
<?php require_once 'PHPUnit/Framework.php'; require_once 'Zend/Test/PHPUnit/ControllerTestCase.php'; class AdminTest extends Zend_Test_PHPUnit_ControllerTestCase { protected function setUp() { $this->bootstrap = dirname(__FILE__).'/../../public_html/admin.php'; parent::setUp(); } protected function tearDown() { } /** * @test */ public function testAdmin() { $c = new Category(); $cat = $c->getCategoryInfo(259); $this->assertEquals("DVD・ミュージック", $cat['title_217']); } ?>
追記 9/18 23:29
これだと複数のテスト記述時にadmin.phpが複数回includeされてエラーになる。