live-commerceでPHPUnitのテストを書く

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されてエラーになる。